- KeyBindingRegistry – allows you to add your own keybindings to the vanilla ones – (for example some vanilla keybindings are A for left and D for right). Your custom keybindings will appear on the options page so that the player can change them.
- MouseEvent – allows you to intercept mouse clicks and mouse movement before the vanilla code sees it.
RenderingA lot of the custom stuff related to rendering has been covered in the other sections, however there are also quite a few other events related to rendering, listed below:
- Various events used to customise Biome-dependent rendering, such as grass colour – see BiomeEvent.
- FOVUpdateEvent (FOV = Field of View, which means how “wide” your view is)
- RenderGameOverlayEvent gets called for a whole stack of different parts of the screen overlay, such as hotbar, crosshairs, health bar, etc. See enum ElementType in the event for more information.
- DrawBlockHighlightEvent – draw the highlight box around the block when your cursor is pointing at it
- Another bundle of Events under RenderLivingEvent and RenderPlayerEvent can be used to control the rendering of the player and other entities in quite some detail.
Graphical User Interface
I’m a bit rubbish on this section because I’ve never actually customised a GUI. From what I can tell, there are a few forge-related additions:
- AchievementPage.registerAchievementPage lets you add your own achievement pages.
- NetworkRegistry.registerGuiHandler (using IGuiHandler) – not sure how to use this.
- GuiIngameForge – replace vanilla in-game overlays with many extra events, and also adds a large number of flags you can change to turn rendering of HUD elements on/off – for example hotbar, crosshairs, helmet, experience bar, etc.
- GuiControlsScrollPanel – accommodates any extra key bindings you have added to the KeyBindingRegistry
- GuiOpenEvent – used to replace a GUI with your own customised version
- PlayerOpenContainerEvent – when opening a GUI container.
There are a few interesting events related to chat:
- NetworkRegistry.registerChatListener(using IChatListener) for intercepting chat messages including commands
- NetworkRegistry.registerConnectionHandler(IConnectionHandler) which gives control over clients and players connecting to the server.
Sounds are registered using SoundLoadEvent instead of a registry call. Don’t ask me why. They are played using using vanilla methods such as SoundManager.playSound. Some related events are
~Overview of Forge (and what it can do for you)
Some general notes
How Forge starts up your code (@Mod, @SidedProxy, etc)
Registering your classes
Extra methods for vanilla base classes
Forge summary - grouped by task
World generation, loading, saving
Miscellaneous - player input, rendering, GUI, chat, sounds