| Line 8: |
Line 8: |
| | '''Generic events''' are events which supply additional generic type information, allowing event listeners to filter based on that secondary type. Generic events must implement <code>IGenericEvent<T></code>, and return their generic type from the <code>IGenericEvent#getType()</code> method. As a convenience, events that wish to be generic events may extend the <code>GenericEvent<T></code> instead of manually implementing the interface. | | '''Generic events''' are events which supply additional generic type information, allowing event listeners to filter based on that secondary type. Generic events must implement <code>IGenericEvent<T></code>, and return their generic type from the <code>IGenericEvent#getType()</code> method. As a convenience, events that wish to be generic events may extend the <code>GenericEvent<T></code> instead of manually implementing the interface. |
| | | | |
| − | For generic events, the generic type must be an exact match with the listener's generic type filter to pass; if an <code>AttachCapabilitiesEvent<ItemStack></code> is fired and a listener is listening for <code>AttachCapabilitiesEvent<Object></code>, the listener does not receive the event. A event listener may listen to events with any generic type by supplying a wildcard generic (<code><?></code>). Nested generic types are ignored. | + | For generic events, the generic type must be an exact match with the listener's generic type filter to pass; if an <code>AttachCapabilitiesEvent<ItemStack></code> is fired and a listener is listening for <code>AttachCapabilitiesEvent<Object></code>, the listener does not receive the event. If an event listener is registered using <code>EventBus#register(Object)</code>, it may listen to events with any generic type by supplying a wildcard generic (<code><?></code>). Nested generic types are ignored. |
| | | | |
| | == Cancellable Events == | | == Cancellable Events == |
| Line 45: |
Line 45: |
| | | | |
| | {{Tip|title=Tip|The mod-specific event buses are provided by the <code>javafml</code> language provider which is builtin to Forge Mod Loader. Custom language providers may provide other ways for mods to receive the different mod-related initialization and registration events; see the documentation of your custom language provider for details.}} | | {{Tip|title=Tip|The mod-specific event buses are provided by the <code>javafml</code> language provider which is builtin to Forge Mod Loader. Custom language providers may provide other ways for mods to receive the different mod-related initialization and registration events; see the documentation of your custom language provider for details.}} |
| | + | |
| | + | List of events fired on the Mod-Specific event bus{{:Events/Mod bus}} |
| | + | |
| | ====Network Channel Event Buses==== | | ====Network Channel Event Buses==== |
| | The '''network channel event buses''' are the family of event buses where different network-related events are fired. Each registered [[Networking|networking channel]] has their own instance of an event-bus in <code>NetworkInstance</code>, where only events pertinent to that channel are fired on. | | The '''network channel event buses''' are the family of event buses where different network-related events are fired. Each registered [[Networking|networking channel]] has their own instance of an event-bus in <code>NetworkInstance</code>, where only events pertinent to that channel are fired on. |
| Line 203: |
Line 206: |
| | | | |
| | | | |
| − | An example for a static event listener listening to <code>RenderWorldLastEvent</code> which will only be called on the physical client: | + | An example for a static event listener listening to <code>RenderLevelLastEvent</code> which will only be called on the physical client: |
| | | | |
| | <syntaxhighlight lang="java"> | | <syntaxhighlight lang="java"> |
| Line 209: |
Line 212: |
| | public class MyStaticClientOnlyEventHandler { | | public class MyStaticClientOnlyEventHandler { |
| | @SubscribeEvent | | @SubscribeEvent |
| − | public static void drawLast(RenderWorldLastEvent event) { | + | public static void drawLast(RenderLevelLastEvent event) { |
| | System.out.println("Drawing!"); | | System.out.println("Drawing!"); |
| | } | | } |
| Line 289: |
Line 292: |
| | * <code>Event</code> - ''The root event class'' | | * <code>Event</code> - ''The root event class'' |
| | ** '''Rendering events''' ('''client-only''') | | ** '''Rendering events''' ('''client-only''') |
| − | *** <code>RenderWorldLastEvent</code> - Fired after world rendering to allow mods to add custom renders | + | *** <code>RenderLevelLastEvent</code> - Fired after level rendering to allow mods to add custom renders |
| | *** <code>RenderHandEvent</code> - Fired before and after the hand of the player is rendered in the first person POV | | *** <code>RenderHandEvent</code> - Fired before and after the hand of the player is rendered in the first person POV |
| | *** <code>RenderLivingEvent</code> - Fired before and after a <code>LivingRenderer</code> is executed | | *** <code>RenderLivingEvent</code> - Fired before and after a <code>LivingRenderer</code> is executed |
| Line 298: |
Line 301: |
| | *** <code>EntityViewRenderEvent</code> - Superclass for events relating to the player's viewpoint | | *** <code>EntityViewRenderEvent</code> - Superclass for events relating to the player's viewpoint |
| | *** <code>RenderGameOverlayEvent</code> - Superclass, fired for each element on the player's HUD or game overlay | | *** <code>RenderGameOverlayEvent</code> - Superclass, fired for each element on the player's HUD or game overlay |
| − | *** <code>FOVUpdateEvent</code> - Fired when the FOV of the player is requested (?) | + | *** <code>FOVModifierEvent</code> - Fired when the FOV of the player is requested (?) |
| − | ** '''GUI/Screen events''' ('''client-only''') | + | ** '''Screen events''' ('''client-only''') |
| − | *** <code>GuiScreenEvent</code> - Superclass for events relating to <code>Screen</code>s | + | *** <code>ScreenEvent</code> - Superclass for events relating to <code>Screen</code>s |
| − | *** <code>GuiContainerEvent</code> - Superclsas for events relating to <code>ContainerScreen</code>s | + | *** <code>ScreenContainerEvent</code> - Superclsas for events relating to <code>ContainerScreen</code>s |
| − | *** <code>GuiOpenEvent</code> - Fired before a new screen is opened on the game window | + | *** <code>ScreenOpenEvent</code> - Fired before a new screen is opened on the game window |
| | ** '''Superclass events''' - ''These events exist to be superclasses of other events'' | | ** '''Superclass events''' - ''These events exist to be superclasses of other events'' |
| | *** <code>GenericEvent</code> - ''from EventBus'', superclass of events which have a generic type | | *** <code>GenericEvent</code> - ''from EventBus'', superclass of events which have a generic type |
| − | *** <code>BlockEvent</code> - Superclass for events relating to a block within the world | + | *** <code>BlockEvent</code> - Superclass for events relating to a block within the level |
| − | *** <code>WorldEvent</code> - Superclass for events relating to the world | + | *** <code>LevelEvent</code> - Superclass for events relating to the level |
| | *** <code>InputEvent</code> - ('''client-only''') Superclass for events relating to the player's keyboard and mouse inputs | | *** <code>InputEvent</code> - ('''client-only''') Superclass for events relating to the player's keyboard and mouse inputs |
| | *** <code>NetworkEvent</code> - Superclass for events relating to networking | | *** <code>NetworkEvent</code> - Superclass for events relating to networking |
| − | *** <code>ExplosionEvent</code> - Fired before an explosion explodes in the world | + | *** <code>ExplosionEvent</code> - Fired before an explosion explodes in the level |
| | *** <code>SoundEvent</code> - ('''client-only''') Superclass for events related to sounds | | *** <code>SoundEvent</code> - ('''client-only''') Superclass for events related to sounds |
| | *** <code>EntityEvent</code> - Superclass for events relating to entities | | *** <code>EntityEvent</code> - Superclass for events relating to entities |
| Line 328: |
Line 331: |
| | ** '''Gamemode events''' | | ** '''Gamemode events''' |
| | *** <code>DifficultyChangeEvent</code> | | *** <code>DifficultyChangeEvent</code> |
| − | *** <code>ClientPlayerChangeGamemodeEvent</code> | + | *** <code>ClientPlayerChangeGameTypeEvent</code> |
| | **'''Trade events''' | | **'''Trade events''' |
| | *** <code>WandererTradesEvent</code> | | *** <code>WandererTradesEvent</code> |