Browse Source

Bump forge event priority to HIGH

My reasoning for this lies in the quirk that Forge by default cancels all following event listeners when one of them fails with an Exception. Because we are an API that mods need to be able to rely on, and this may cause cascading issues with mods that depend on us down the line (see https://github.com/KubeJS-Mods/KubeJS/issues/101), I think we should act on HIGH priority by default to reduce the risk of this happening
Max 4 years ago
parent
commit
9fb19f9605

+ 42 - 41
forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImplClient.java

@@ -38,6 +38,7 @@ import net.minecraftforge.client.event.*;
 import net.minecraftforge.event.entity.player.ItemTooltipEvent;
 import net.minecraftforge.event.entity.player.ItemTooltipEvent;
 import net.minecraftforge.event.entity.player.PlayerInteractEvent;
 import net.minecraftforge.event.entity.player.PlayerInteractEvent;
 import net.minecraftforge.event.world.WorldEvent;
 import net.minecraftforge.event.world.WorldEvent;
+import net.minecraftforge.eventbus.api.EventPriority;
 import net.minecraftforge.eventbus.api.SubscribeEvent;
 import net.minecraftforge.eventbus.api.SubscribeEvent;
 import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
 import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
 
 
@@ -45,12 +46,12 @@ import java.util.List;
 
 
 @OnlyIn(Dist.CLIENT)
 @OnlyIn(Dist.CLIENT)
 public class EventHandlerImplClient {
 public class EventHandlerImplClient {
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ItemTooltipEvent event) {
     public static void event(ItemTooltipEvent event) {
         TooltipEvent.ITEM.invoker().append(event.getItemStack(), event.getToolTip(), event.getFlags());
         TooltipEvent.ITEM.invoker().append(event.getItemStack(), event.getToolTip(), event.getFlags());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(net.minecraftforge.event.TickEvent.ClientTickEvent event) {
     public static void event(net.minecraftforge.event.TickEvent.ClientTickEvent event) {
         if (event.phase == net.minecraftforge.event.TickEvent.Phase.START)
         if (event.phase == net.minecraftforge.event.TickEvent.Phase.START)
             ClientTickEvent.CLIENT_PRE.invoker().tick(Minecraft.getInstance());
             ClientTickEvent.CLIENT_PRE.invoker().tick(Minecraft.getInstance());
@@ -58,40 +59,40 @@ public class EventHandlerImplClient {
             ClientTickEvent.CLIENT_POST.invoker().tick(Minecraft.getInstance());
             ClientTickEvent.CLIENT_POST.invoker().tick(Minecraft.getInstance());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RenderGameOverlayEvent.Post event) {
     public static void event(RenderGameOverlayEvent.Post event) {
         if (event.getType() == RenderGameOverlayEvent.ElementType.ALL)
         if (event.getType() == RenderGameOverlayEvent.ElementType.ALL)
             GuiEvent.RENDER_HUD.invoker().renderHud(event.getMatrixStack(), event.getPartialTicks());
             GuiEvent.RENDER_HUD.invoker().renderHud(event.getMatrixStack(), event.getPartialTicks());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ClientPlayerNetworkEvent.LoggedInEvent event) {
     public static void event(ClientPlayerNetworkEvent.LoggedInEvent event) {
         ClientPlayerEvent.CLIENT_PLAYER_JOIN.invoker().join(event.getPlayer());
         ClientPlayerEvent.CLIENT_PLAYER_JOIN.invoker().join(event.getPlayer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ClientPlayerNetworkEvent.LoggedOutEvent event) {
     public static void event(ClientPlayerNetworkEvent.LoggedOutEvent event) {
         ClientPlayerEvent.CLIENT_PLAYER_QUIT.invoker().quit(event.getPlayer());
         ClientPlayerEvent.CLIENT_PLAYER_QUIT.invoker().quit(event.getPlayer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ClientPlayerNetworkEvent.RespawnEvent event) {
     public static void event(ClientPlayerNetworkEvent.RespawnEvent event) {
         ClientPlayerEvent.CLIENT_PLAYER_RESPAWN.invoker().respawn(event.getOldPlayer(), event.getNewPlayer());
         ClientPlayerEvent.CLIENT_PLAYER_RESPAWN.invoker().respawn(event.getOldPlayer(), event.getNewPlayer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.InitGuiEvent.Pre event) {
     public static void event(GuiScreenEvent.InitGuiEvent.Pre event) {
         if (GuiEvent.INIT_PRE.invoker().init(event.getGui(), event.getWidgetList(), (List<GuiEventListener>) event.getGui().children()) != InteractionResult.PASS) {
         if (GuiEvent.INIT_PRE.invoker().init(event.getGui(), event.getWidgetList(), (List<GuiEventListener>) event.getGui().children()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.InitGuiEvent.Post event) {
     public static void event(GuiScreenEvent.InitGuiEvent.Post event) {
         GuiEvent.INIT_POST.invoker().init(event.getGui(), event.getWidgetList(), (List<GuiEventListener>) event.getGui().children());
         GuiEvent.INIT_POST.invoker().init(event.getGui(), event.getWidgetList(), (List<GuiEventListener>) event.getGui().children());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RenderGameOverlayEvent.Text event) {
     public static void event(RenderGameOverlayEvent.Text event) {
         if (Minecraft.getInstance().options.renderDebug) {
         if (Minecraft.getInstance().options.renderDebug) {
             GuiEvent.DEBUG_TEXT_LEFT.invoker().gatherText(event.getLeft());
             GuiEvent.DEBUG_TEXT_LEFT.invoker().gatherText(event.getLeft());
@@ -99,7 +100,7 @@ public class EventHandlerImplClient {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(net.minecraftforge.client.event.ClientChatEvent event) {
     public static void event(net.minecraftforge.client.event.ClientChatEvent event) {
         InteractionResultHolder<String> process = ClientChatEvent.CLIENT.invoker().process(event.getMessage());
         InteractionResultHolder<String> process = ClientChatEvent.CLIENT.invoker().process(event.getMessage());
         if (process.getObject() != null)
         if (process.getObject() != null)
@@ -108,7 +109,7 @@ public class EventHandlerImplClient {
             event.setCanceled(true);
             event.setCanceled(true);
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ClientChatReceivedEvent event) {
     public static void event(ClientChatReceivedEvent event) {
         InteractionResultHolder<Component> process = ClientChatEvent.CLIENT_RECEIVED.invoker().process(event.getType(), event.getMessage(), event.getSenderUUID());
         InteractionResultHolder<Component> process = ClientChatEvent.CLIENT_RECEIVED.invoker().process(event.getType(), event.getMessage(), event.getSenderUUID());
         if (process.getObject() != null)
         if (process.getObject() != null)
@@ -117,7 +118,7 @@ public class EventHandlerImplClient {
             event.setCanceled(true);
             event.setCanceled(true);
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(WorldEvent.Load event) {
     public static void event(WorldEvent.Load event) {
         if (event.getWorld().isClientSide()) {
         if (event.getWorld().isClientSide()) {
             ClientLevel world = (ClientLevel) event.getWorld();
             ClientLevel world = (ClientLevel) event.getWorld();
@@ -125,7 +126,7 @@ public class EventHandlerImplClient {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiOpenEvent event) {
     public static void event(GuiOpenEvent event) {
         InteractionResultHolder<Screen> result = GuiEvent.SET_SCREEN.invoker().modifyScreen(event.getGui());
         InteractionResultHolder<Screen> result = GuiEvent.SET_SCREEN.invoker().modifyScreen(event.getGui());
         switch (result.getResult()) {
         switch (result.getResult()) {
@@ -137,29 +138,29 @@ public class EventHandlerImplClient {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.DrawScreenEvent.Pre event) {
     public static void event(GuiScreenEvent.DrawScreenEvent.Pre event) {
         if (GuiEvent.RENDER_PRE.invoker().render(event.getGui(), event.getMatrixStack(), event.getMouseX(), event.getMouseY(), event.getRenderPartialTicks()) != InteractionResult.PASS) {
         if (GuiEvent.RENDER_PRE.invoker().render(event.getGui(), event.getMatrixStack(), event.getMouseX(), event.getMouseY(), event.getRenderPartialTicks()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.DrawScreenEvent.Post event) {
     public static void event(GuiScreenEvent.DrawScreenEvent.Post event) {
         GuiEvent.RENDER_POST.invoker().render(event.getGui(), event.getMatrixStack(), event.getMouseX(), event.getMouseY(), event.getRenderPartialTicks());
         GuiEvent.RENDER_POST.invoker().render(event.getGui(), event.getMatrixStack(), event.getMouseX(), event.getMouseY(), event.getRenderPartialTicks());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.RightClickEmpty event) {
     public static void event(PlayerInteractEvent.RightClickEmpty event) {
         InteractionEvent.CLIENT_RIGHT_CLICK_AIR.invoker().click(event.getPlayer(), event.getHand());
         InteractionEvent.CLIENT_RIGHT_CLICK_AIR.invoker().click(event.getPlayer(), event.getHand());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.LeftClickEmpty event) {
     public static void event(PlayerInteractEvent.LeftClickEmpty event) {
         InteractionEvent.CLIENT_LEFT_CLICK_AIR.invoker().click(event.getPlayer(), event.getHand());
         InteractionEvent.CLIENT_LEFT_CLICK_AIR.invoker().click(event.getPlayer(), event.getHand());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RecipesUpdatedEvent event) {
     public static void event(RecipesUpdatedEvent event) {
         RecipeUpdateEvent.EVENT.invoker().update(event.getRecipeManager());
         RecipeUpdateEvent.EVENT.invoker().update(event.getRecipeManager());
     }
     }
@@ -167,7 +168,7 @@ public class EventHandlerImplClient {
     private static final ThreadLocal<TooltipEventColorContextImpl> tooltipColorContext = ThreadLocal.withInitial(TooltipEventColorContextImpl::new);
     private static final ThreadLocal<TooltipEventColorContextImpl> tooltipColorContext = ThreadLocal.withInitial(TooltipEventColorContextImpl::new);
     private static final ThreadLocal<TooltipEventPositionContextImpl> tooltipPositionContext = ThreadLocal.withInitial(TooltipEventPositionContextImpl::new);
     private static final ThreadLocal<TooltipEventPositionContextImpl> tooltipPositionContext = ThreadLocal.withInitial(TooltipEventPositionContextImpl::new);
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RenderTooltipEvent.Pre event) {
     public static void event(RenderTooltipEvent.Pre event) {
         if (TooltipEvent.RENDER_FORGE_PRE.invoker().renderTooltip(event.getMatrixStack(), event.getLines(), event.getX(), event.getY()) == InteractionResult.FAIL) {
         if (TooltipEvent.RENDER_FORGE_PRE.invoker().renderTooltip(event.getMatrixStack(), event.getLines(), event.getX(), event.getY()) == InteractionResult.FAIL) {
             event.setCanceled(true);
             event.setCanceled(true);
@@ -181,7 +182,7 @@ public class EventHandlerImplClient {
         event.setY(positionContext.getTooltipY());
         event.setY(positionContext.getTooltipY());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RenderTooltipEvent.Color event) {
     public static void event(RenderTooltipEvent.Color event) {
         TooltipEventColorContextImpl colorContext = tooltipColorContext.get();
         TooltipEventColorContextImpl colorContext = tooltipColorContext.get();
         colorContext.reset();
         colorContext.reset();
@@ -194,127 +195,127 @@ public class EventHandlerImplClient {
         event.setBorderStart(colorContext.getOutlineGradientTopColor());
         event.setBorderStart(colorContext.getOutlineGradientTopColor());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseScrollEvent.Pre event) {
     public static void event(GuiScreenEvent.MouseScrollEvent.Pre event) {
         if (ClientScreenInputEvent.MOUSE_SCROLLED_PRE.invoker().mouseScrolled(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getScrollDelta()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.MOUSE_SCROLLED_PRE.invoker().mouseScrolled(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getScrollDelta()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseScrollEvent.Post event) {
     public static void event(GuiScreenEvent.MouseScrollEvent.Post event) {
         ClientScreenInputEvent.MOUSE_SCROLLED_POST.invoker().mouseScrolled(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getScrollDelta());
         ClientScreenInputEvent.MOUSE_SCROLLED_POST.invoker().mouseScrolled(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getScrollDelta());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseClickedEvent.Pre event) {
     public static void event(GuiScreenEvent.MouseClickedEvent.Pre event) {
         if (ClientScreenInputEvent.MOUSE_CLICKED_PRE.invoker().mouseClicked(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.MOUSE_CLICKED_PRE.invoker().mouseClicked(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseClickedEvent.Post event) {
     public static void event(GuiScreenEvent.MouseClickedEvent.Post event) {
         ClientScreenInputEvent.MOUSE_CLICKED_POST.invoker().mouseClicked(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton());
         ClientScreenInputEvent.MOUSE_CLICKED_POST.invoker().mouseClicked(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseDragEvent.Pre event) {
     public static void event(GuiScreenEvent.MouseDragEvent.Pre event) {
         if (ClientScreenInputEvent.MOUSE_DRAGGED_PRE.invoker().mouseDragged(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getMouseButton(), event.getDragX(), event.getDragY()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.MOUSE_DRAGGED_PRE.invoker().mouseDragged(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getMouseButton(), event.getDragX(), event.getDragY()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseDragEvent.Post event) {
     public static void event(GuiScreenEvent.MouseDragEvent.Post event) {
         ClientScreenInputEvent.MOUSE_DRAGGED_POST.invoker().mouseDragged(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getMouseButton(), event.getDragX(), event.getDragY());
         ClientScreenInputEvent.MOUSE_DRAGGED_POST.invoker().mouseDragged(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getMouseButton(), event.getDragX(), event.getDragY());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseReleasedEvent.Pre event) {
     public static void event(GuiScreenEvent.MouseReleasedEvent.Pre event) {
         if (ClientScreenInputEvent.MOUSE_RELEASED_PRE.invoker().mouseReleased(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.MOUSE_RELEASED_PRE.invoker().mouseReleased(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.MouseReleasedEvent.Post event) {
     public static void event(GuiScreenEvent.MouseReleasedEvent.Post event) {
         ClientScreenInputEvent.MOUSE_RELEASED_PRE.invoker().mouseReleased(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton());
         ClientScreenInputEvent.MOUSE_RELEASED_PRE.invoker().mouseReleased(Minecraft.getInstance(), event.getGui(), event.getMouseX(), event.getMouseY(), event.getButton());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardCharTypedEvent.Pre event) {
     public static void event(GuiScreenEvent.KeyboardCharTypedEvent.Pre event) {
         if (ClientScreenInputEvent.CHAR_TYPED_PRE.invoker().charTyped(Minecraft.getInstance(), event.getGui(), event.getCodePoint(), event.getModifiers()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.CHAR_TYPED_PRE.invoker().charTyped(Minecraft.getInstance(), event.getGui(), event.getCodePoint(), event.getModifiers()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardCharTypedEvent.Post event) {
     public static void event(GuiScreenEvent.KeyboardCharTypedEvent.Post event) {
         ClientScreenInputEvent.CHAR_TYPED_POST.invoker().charTyped(Minecraft.getInstance(), event.getGui(), event.getCodePoint(), event.getModifiers());
         ClientScreenInputEvent.CHAR_TYPED_POST.invoker().charTyped(Minecraft.getInstance(), event.getGui(), event.getCodePoint(), event.getModifiers());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardKeyPressedEvent.Pre event) {
     public static void event(GuiScreenEvent.KeyboardKeyPressedEvent.Pre event) {
         if (ClientScreenInputEvent.KEY_PRESSED_PRE.invoker().keyPressed(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.KEY_PRESSED_PRE.invoker().keyPressed(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardKeyPressedEvent.Post event) {
     public static void event(GuiScreenEvent.KeyboardKeyPressedEvent.Post event) {
         ClientScreenInputEvent.KEY_PRESSED_POST.invoker().keyPressed(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers());
         ClientScreenInputEvent.KEY_PRESSED_POST.invoker().keyPressed(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardKeyReleasedEvent.Pre event) {
     public static void event(GuiScreenEvent.KeyboardKeyReleasedEvent.Pre event) {
         if (ClientScreenInputEvent.KEY_RELEASED_PRE.invoker().keyReleased(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers()) != InteractionResult.PASS) {
         if (ClientScreenInputEvent.KEY_RELEASED_PRE.invoker().keyReleased(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(GuiScreenEvent.KeyboardKeyReleasedEvent.Post event) {
     public static void event(GuiScreenEvent.KeyboardKeyReleasedEvent.Post event) {
         ClientScreenInputEvent.KEY_RELEASED_POST.invoker().keyReleased(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers());
         ClientScreenInputEvent.KEY_RELEASED_POST.invoker().keyReleased(Minecraft.getInstance(), event.getGui(), event.getKeyCode(), event.getScanCode(), event.getModifiers());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(InputEvent.MouseScrollEvent event) {
     public static void event(InputEvent.MouseScrollEvent event) {
         if (ClientRawInputEvent.MOUSE_SCROLLED.invoker().mouseScrolled(Minecraft.getInstance(), event.getScrollDelta()) != InteractionResult.PASS) {
         if (ClientRawInputEvent.MOUSE_SCROLLED.invoker().mouseScrolled(Minecraft.getInstance(), event.getScrollDelta()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(InputEvent.RawMouseEvent event) {
     public static void event(InputEvent.RawMouseEvent event) {
         if (ClientRawInputEvent.MOUSE_CLICKED_PRE.invoker().mouseClicked(Minecraft.getInstance(), event.getButton(), event.getAction(), event.getMods()) != InteractionResult.PASS) {
         if (ClientRawInputEvent.MOUSE_CLICKED_PRE.invoker().mouseClicked(Minecraft.getInstance(), event.getButton(), event.getAction(), event.getMods()) != InteractionResult.PASS) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(InputEvent.MouseInputEvent event) {
     public static void event(InputEvent.MouseInputEvent event) {
         ClientRawInputEvent.MOUSE_CLICKED_POST.invoker().mouseClicked(Minecraft.getInstance(), event.getButton(), event.getAction(), event.getMods());
         ClientRawInputEvent.MOUSE_CLICKED_POST.invoker().mouseClicked(Minecraft.getInstance(), event.getButton(), event.getAction(), event.getMods());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(InputEvent.KeyInputEvent event) {
     public static void event(InputEvent.KeyInputEvent event) {
         ClientRawInputEvent.KEY_PRESSED.invoker().keyPressed(Minecraft.getInstance(), event.getKey(), event.getScanCode(), event.getAction(), event.getModifiers());
         ClientRawInputEvent.KEY_PRESSED.invoker().keyPressed(Minecraft.getInstance(), event.getKey(), event.getScanCode(), event.getAction(), event.getModifiers());
     }
     }
     
     
     @OnlyIn(Dist.CLIENT)
     @OnlyIn(Dist.CLIENT)
     public static class ModBasedEventHandler {
     public static class ModBasedEventHandler {
-        @SubscribeEvent
+        @SubscribeEvent(priority = EventPriority.HIGH)
         public static void event(net.minecraftforge.client.event.TextureStitchEvent.Pre event) {
         public static void event(net.minecraftforge.client.event.TextureStitchEvent.Pre event) {
             TextureStitchEvent.PRE.invoker().stitch(event.getMap(), event::addSprite);
             TextureStitchEvent.PRE.invoker().stitch(event.getMap(), event::addSprite);
         }
         }
         
         
-        @SubscribeEvent
+        @SubscribeEvent(priority = EventPriority.HIGH)
         public static void event(net.minecraftforge.client.event.TextureStitchEvent.Post event) {
         public static void event(net.minecraftforge.client.event.TextureStitchEvent.Post event) {
             TextureStitchEvent.POST.invoker().stitch(event.getMap());
             TextureStitchEvent.POST.invoker().stitch(event.getMap());
         }
         }
         
         
-        @SubscribeEvent
+        @SubscribeEvent(priority = EventPriority.HIGH)
         public static void event(FMLClientSetupEvent event) {
         public static void event(FMLClientSetupEvent event) {
             ClientLifecycleEvent.CLIENT_SETUP.invoker().stateChanged(event.getMinecraftSupplier().get());
             ClientLifecycleEvent.CLIENT_SETUP.invoker().stateChanged(event.getMinecraftSupplier().get());
         }
         }

+ 39 - 38
forge/src/main/java/me/shedaniel/architectury/event/forge/EventHandlerImplCommon.java

@@ -50,13 +50,14 @@ import net.minecraftforge.event.world.ExplosionEvent.Detonate;
 import net.minecraftforge.event.world.ExplosionEvent.Start;
 import net.minecraftforge.event.world.ExplosionEvent.Start;
 import net.minecraftforge.event.world.WorldEvent;
 import net.minecraftforge.event.world.WorldEvent;
 import net.minecraftforge.eventbus.api.Event;
 import net.minecraftforge.eventbus.api.Event;
+import net.minecraftforge.eventbus.api.EventPriority;
 import net.minecraftforge.eventbus.api.SubscribeEvent;
 import net.minecraftforge.eventbus.api.SubscribeEvent;
 import net.minecraftforge.fml.LogicalSide;
 import net.minecraftforge.fml.LogicalSide;
 import net.minecraftforge.fml.event.server.*;
 import net.minecraftforge.fml.event.server.*;
 import net.minecraftforge.fml.server.ServerLifecycleHooks;
 import net.minecraftforge.fml.server.ServerLifecycleHooks;
 
 
 public class EventHandlerImplCommon {
 public class EventHandlerImplCommon {
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ServerTickEvent event) {
     public static void event(ServerTickEvent event) {
         if (event.phase == Phase.START)
         if (event.phase == Phase.START)
             TickEvent.SERVER_PRE.invoker().tick(ServerLifecycleHooks.getCurrentServer());
             TickEvent.SERVER_PRE.invoker().tick(ServerLifecycleHooks.getCurrentServer());
@@ -64,7 +65,7 @@ public class EventHandlerImplCommon {
             TickEvent.SERVER_POST.invoker().tick(ServerLifecycleHooks.getCurrentServer());
             TickEvent.SERVER_POST.invoker().tick(ServerLifecycleHooks.getCurrentServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(WorldTickEvent event) {
     public static void event(WorldTickEvent event) {
         if (event.side == LogicalSide.SERVER) {
         if (event.side == LogicalSide.SERVER) {
             if (event.phase == Phase.START)
             if (event.phase == Phase.START)
@@ -74,47 +75,47 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(FMLServerStartingEvent event) {
     public static void event(FMLServerStartingEvent event) {
         LifecycleEvent.SERVER_STARTING.invoker().stateChanged(event.getServer());
         LifecycleEvent.SERVER_STARTING.invoker().stateChanged(event.getServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(FMLServerStartedEvent event) {
     public static void event(FMLServerStartedEvent event) {
         LifecycleEvent.SERVER_STARTED.invoker().stateChanged(event.getServer());
         LifecycleEvent.SERVER_STARTED.invoker().stateChanged(event.getServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(FMLServerStoppingEvent event) {
     public static void event(FMLServerStoppingEvent event) {
         LifecycleEvent.SERVER_STOPPING.invoker().stateChanged(event.getServer());
         LifecycleEvent.SERVER_STOPPING.invoker().stateChanged(event.getServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(FMLServerStoppedEvent event) {
     public static void event(FMLServerStoppedEvent event) {
         LifecycleEvent.SERVER_STOPPED.invoker().stateChanged(event.getServer());
         LifecycleEvent.SERVER_STOPPED.invoker().stateChanged(event.getServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(RegisterCommandsEvent event) {
     public static void event(RegisterCommandsEvent event) {
         CommandRegistrationEvent.EVENT.invoker().register(event.getDispatcher(), event.getEnvironment());
         CommandRegistrationEvent.EVENT.invoker().register(event.getDispatcher(), event.getEnvironment());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerLoggedInEvent event) {
     public static void event(PlayerLoggedInEvent event) {
         PlayerEvent.PLAYER_JOIN.invoker().join((ServerPlayer) event.getPlayer());
         PlayerEvent.PLAYER_JOIN.invoker().join((ServerPlayer) event.getPlayer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerLoggedOutEvent event) {
     public static void event(PlayerLoggedOutEvent event) {
         PlayerEvent.PLAYER_QUIT.invoker().quit((ServerPlayer) event.getPlayer());
         PlayerEvent.PLAYER_QUIT.invoker().quit((ServerPlayer) event.getPlayer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerRespawnEvent event) {
     public static void event(PlayerRespawnEvent event) {
         PlayerEvent.PLAYER_RESPAWN.invoker().respawn((ServerPlayer) event.getPlayer(), event.isEndConquered());
         PlayerEvent.PLAYER_RESPAWN.invoker().respawn((ServerPlayer) event.getPlayer(), event.isEndConquered());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(CommandEvent event) {
     public static void event(CommandEvent event) {
         CommandPerformEvent performEvent = new CommandPerformEvent(event.getParseResults(), event.getException());
         CommandPerformEvent performEvent = new CommandPerformEvent(event.getParseResults(), event.getException());
         if (CommandPerformEvent.EVENT.invoker().act(performEvent) == InteractionResult.FAIL) {
         if (CommandPerformEvent.EVENT.invoker().act(performEvent) == InteractionResult.FAIL) {
@@ -124,7 +125,7 @@ public class EventHandlerImplCommon {
         event.setException(performEvent.getThrowable());
         event.setException(performEvent.getThrowable());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerTickEvent event) {
     public static void event(PlayerTickEvent event) {
         if (event.phase == Phase.START) {
         if (event.phase == Phase.START) {
             TickEvent.PLAYER_PRE.invoker().tick(event.player);
             TickEvent.PLAYER_PRE.invoker().tick(event.player);
@@ -133,7 +134,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ServerChatEvent event) {
     public static void event(ServerChatEvent event) {
         InteractionResultHolder<Component> process = ChatEvent.SERVER.invoker().process(event.getPlayer(), event.getMessage(), event.getComponent());
         InteractionResultHolder<Component> process = ChatEvent.SERVER.invoker().process(event.getPlayer(), event.getMessage(), event.getComponent());
         if (process.getObject() != null)
         if (process.getObject() != null)
@@ -142,7 +143,7 @@ public class EventHandlerImplCommon {
             event.setCanceled(true);
             event.setCanceled(true);
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(WorldEvent.Load event) {
     public static void event(WorldEvent.Load event) {
         if (event.getWorld() instanceof ServerLevel) {
         if (event.getWorld() instanceof ServerLevel) {
             ServerLevel world = (ServerLevel) event.getWorld();
             ServerLevel world = (ServerLevel) event.getWorld();
@@ -150,7 +151,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(WorldEvent.Unload event) {
     public static void event(WorldEvent.Unload event) {
         if (event.getWorld() instanceof ServerLevel) {
         if (event.getWorld() instanceof ServerLevel) {
             ServerLevel world = (ServerLevel) event.getWorld();
             ServerLevel world = (ServerLevel) event.getWorld();
@@ -158,7 +159,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(WorldEvent.Save event) {
     public static void event(WorldEvent.Save event) {
         if (event.getWorld() instanceof ServerLevel) {
         if (event.getWorld() instanceof ServerLevel) {
             ServerLevel world = (ServerLevel) event.getWorld();
             ServerLevel world = (ServerLevel) event.getWorld();
@@ -166,89 +167,89 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(LivingDeathEvent event) {
     public static void event(LivingDeathEvent event) {
         if (EntityEvent.LIVING_DEATH.invoker().die(event.getEntityLiving(), event.getSource()) == InteractionResult.FAIL) {
         if (EntityEvent.LIVING_DEATH.invoker().die(event.getEntityLiving(), event.getSource()) == InteractionResult.FAIL) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(AdvancementEvent event) {
     public static void event(AdvancementEvent event) {
         if (event.getPlayer() instanceof ServerPlayer) {
         if (event.getPlayer() instanceof ServerPlayer) {
             PlayerEvent.PLAYER_ADVANCEMENT.invoker().award((ServerPlayer) event.getPlayer(), event.getAdvancement());
             PlayerEvent.PLAYER_ADVANCEMENT.invoker().award((ServerPlayer) event.getPlayer(), event.getAdvancement());
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(Clone event) {
     public static void event(Clone event) {
         if (event.getOriginal() instanceof ServerPlayer && event.getPlayer() instanceof ServerPlayer) {
         if (event.getOriginal() instanceof ServerPlayer && event.getPlayer() instanceof ServerPlayer) {
             PlayerEvent.PLAYER_CLONE.invoker().clone((ServerPlayer) event.getOriginal(), (ServerPlayer) event.getPlayer(), !event.isWasDeath());
             PlayerEvent.PLAYER_CLONE.invoker().clone((ServerPlayer) event.getOriginal(), (ServerPlayer) event.getPlayer(), !event.isWasDeath());
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(Start event) {
     public static void event(Start event) {
         if (ExplosionEvent.PRE.invoker().explode(event.getWorld(), event.getExplosion()) == InteractionResult.FAIL) {
         if (ExplosionEvent.PRE.invoker().explode(event.getWorld(), event.getExplosion()) == InteractionResult.FAIL) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(Detonate event) {
     public static void event(Detonate event) {
         ExplosionEvent.DETONATE.invoker().explode(event.getWorld(), event.getExplosion(), event.getAffectedEntities());
         ExplosionEvent.DETONATE.invoker().explode(event.getWorld(), event.getExplosion(), event.getAffectedEntities());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(LivingAttackEvent event) {
     public static void event(LivingAttackEvent event) {
         if (EntityEvent.LIVING_ATTACK.invoker().attack(event.getEntityLiving(), event.getSource(), event.getAmount()) == InteractionResult.FAIL) {
         if (EntityEvent.LIVING_ATTACK.invoker().attack(event.getEntityLiving(), event.getSource(), event.getAmount()) == InteractionResult.FAIL) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(EntityJoinWorldEvent event) {
     public static void event(EntityJoinWorldEvent event) {
         if (EntityEvent.ADD.invoker().add(event.getEntity(), event.getWorld()) == InteractionResult.FAIL) {
         if (EntityEvent.ADD.invoker().add(event.getEntity(), event.getWorld()) == InteractionResult.FAIL) {
             event.setCanceled(true);
             event.setCanceled(true);
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ItemCraftedEvent event) {
     public static void event(ItemCraftedEvent event) {
         PlayerEvent.CRAFT_ITEM.invoker().craft(event.getPlayer(), event.getCrafting(), event.getInventory());
         PlayerEvent.CRAFT_ITEM.invoker().craft(event.getPlayer(), event.getCrafting(), event.getInventory());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ItemSmeltedEvent event) {
     public static void event(ItemSmeltedEvent event) {
         PlayerEvent.SMELT_ITEM.invoker().smelt(event.getPlayer(), event.getSmelting());
         PlayerEvent.SMELT_ITEM.invoker().smelt(event.getPlayer(), event.getSmelting());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(EntityItemPickupEvent event) {
     public static void event(EntityItemPickupEvent event) {
         PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getPlayer(), event.getItem(), event.getItem().getItem());
         PlayerEvent.PICKUP_ITEM_PRE.invoker().canPickup(event.getPlayer(), event.getItem(), event.getItem().getItem());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ItemPickupEvent event) {
     public static void event(ItemPickupEvent event) {
         PlayerEvent.PICKUP_ITEM_POST.invoker().pickup(event.getPlayer(), event.getOriginalEntity(), event.getStack());
         PlayerEvent.PICKUP_ITEM_POST.invoker().pickup(event.getPlayer(), event.getOriginalEntity(), event.getStack());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(ItemTossEvent event) {
     public static void event(ItemTossEvent event) {
         PlayerEvent.DROP_ITEM.invoker().drop(event.getPlayer(), event.getEntityItem());
         PlayerEvent.DROP_ITEM.invoker().drop(event.getPlayer(), event.getEntityItem());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerContainerEvent.Open event) {
     public static void event(PlayerContainerEvent.Open event) {
         PlayerEvent.OPEN_MENU.invoker().open(event.getPlayer(), event.getContainer());
         PlayerEvent.OPEN_MENU.invoker().open(event.getPlayer(), event.getContainer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerContainerEvent.Close event) {
     public static void event(PlayerContainerEvent.Close event) {
         PlayerEvent.CLOSE_MENU.invoker().close(event.getPlayer(), event.getContainer());
         PlayerEvent.CLOSE_MENU.invoker().close(event.getPlayer(), event.getContainer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.RightClickItem event) {
     public static void event(PlayerInteractEvent.RightClickItem event) {
         InteractionResultHolder<ItemStack> result = InteractionEvent.RIGHT_CLICK_ITEM.invoker().click(event.getPlayer(), event.getHand());
         InteractionResultHolder<ItemStack> result = InteractionEvent.RIGHT_CLICK_ITEM.invoker().click(event.getPlayer(), event.getHand());
         if (result.getResult() != InteractionResult.PASS) {
         if (result.getResult() != InteractionResult.PASS) {
@@ -257,7 +258,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.RightClickBlock event) {
     public static void event(PlayerInteractEvent.RightClickBlock event) {
         InteractionResult result = InteractionEvent.RIGHT_CLICK_BLOCK.invoker().click(event.getPlayer(), event.getHand(), event.getPos(), event.getFace());
         InteractionResult result = InteractionEvent.RIGHT_CLICK_BLOCK.invoker().click(event.getPlayer(), event.getHand(), event.getPos(), event.getFace());
         if (result != InteractionResult.PASS) {
         if (result != InteractionResult.PASS) {
@@ -268,7 +269,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.EntityInteract event) {
     public static void event(PlayerInteractEvent.EntityInteract event) {
         InteractionResult result = InteractionEvent.INTERACT_ENTITY.invoker().interact(event.getPlayer(), event.getTarget(), event.getHand());
         InteractionResult result = InteractionEvent.INTERACT_ENTITY.invoker().interact(event.getPlayer(), event.getTarget(), event.getHand());
         if (result != InteractionResult.PASS) {
         if (result != InteractionResult.PASS) {
@@ -277,7 +278,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerInteractEvent.LeftClickBlock event) {
     public static void event(PlayerInteractEvent.LeftClickBlock event) {
         InteractionResult result = InteractionEvent.LEFT_CLICK_BLOCK.invoker().click(event.getPlayer(), event.getHand(), event.getPos(), event.getFace());
         InteractionResult result = InteractionEvent.LEFT_CLICK_BLOCK.invoker().click(event.getPlayer(), event.getHand(), event.getPos(), event.getFace());
         if (result != InteractionResult.PASS) {
         if (result != InteractionResult.PASS) {
@@ -288,7 +289,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(BreakEvent event) {
     public static void event(BreakEvent event) {
         if (event.getPlayer() instanceof ServerPlayer && event.getWorld() instanceof Level) {
         if (event.getPlayer() instanceof ServerPlayer && event.getWorld() instanceof Level) {
             InteractionResult result = BlockEvent.BREAK.invoker().breakBlock((Level) event.getWorld(), event.getPos(), event.getState(), (ServerPlayer) event.getPlayer(), new IntValue() {
             InteractionResult result = BlockEvent.BREAK.invoker().breakBlock((Level) event.getWorld(), event.getPos(), event.getState(), (ServerPlayer) event.getPlayer(), new IntValue() {
@@ -308,7 +309,7 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(EntityPlaceEvent event) {
     public static void event(EntityPlaceEvent event) {
         if (event.getWorld() instanceof Level) {
         if (event.getWorld() instanceof Level) {
             InteractionResult result = BlockEvent.PLACE.invoker().placeBlock((Level) event.getWorld(), event.getPos(), event.getState(), event.getEntity());
             InteractionResult result = BlockEvent.PLACE.invoker().placeBlock((Level) event.getWorld(), event.getPos(), event.getState(), event.getEntity());
@@ -318,12 +319,12 @@ public class EventHandlerImplCommon {
         }
         }
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(FMLServerAboutToStartEvent event) {
     public static void event(FMLServerAboutToStartEvent event) {
         LifecycleEvent.SERVER_BEFORE_START.invoker().stateChanged(event.getServer());
         LifecycleEvent.SERVER_BEFORE_START.invoker().stateChanged(event.getServer());
     }
     }
     
     
-    @SubscribeEvent
+    @SubscribeEvent(priority = EventPriority.HIGH)
     public static void event(PlayerChangedDimensionEvent event) {
     public static void event(PlayerChangedDimensionEvent event) {
         if (event.getPlayer() instanceof ServerPlayer) {
         if (event.getPlayer() instanceof ServerPlayer) {
             PlayerEvent.CHANGE_DIMENSION.invoker().change((ServerPlayer) event.getPlayer(), event.getFrom(), event.getTo());
             PlayerEvent.CHANGE_DIMENSION.invoker().change((ServerPlayer) event.getPlayer(), event.getFrom(), event.getTo());