Rift is a lightweight modding API, library, and mod loader for Minecraft 1.13. The main objective of Rift is to make a more modular and lightweight modding API for Minecraft. Rift is not intended to compete with or replace Forge, but rather Rift and a set of optional community-made library mods is. A full list of these can be found below.
Discord server: https://discord.gg/f27hdrM
Installation: Since Forge for 1.13 is not available yet, the only way to install or upgrade Rift is to run the jar by double-clicking it. It will copy itself to your .minecraft folder and a "Rift" profile will be added to the launcher. Add Rift mods to the ".minecraft/mods" folder, as usual.
Installing Optifine: Add Optifine to the "mods" folder. Rift will recognize and load it
Installing in MultiMC: Click "Add Instance", "Import from zip", and paste this link in the box: https://media.forgecdn.net/files/2610/746/rift-1.0.4-66.zip
Running a server: Place the Rift jar into an empty directory and run "java -jar Rift.jar --server". Spigot support coming soon
Why another mod API?
Making a lightweight and modular API
The main goal of Rift is to provide a mod API capable of extending any aspect of the game while changing the game as little as possible and adding no additional dependencies. Rather than an over-complicated event system, Rift implements a simple, faster, and cleaner interface-based system for extending vanilla Minecraft.
For modifying vanilla behavior, Rift encourages mods to use the Mixin library to add callbacks or redirects in any vanilla method, rather than an fixed and inflexible set of hooks.
Rift intentionally does not add complex features such as energy APIs, alternative model renderers, and custom block state formats. Those should be implemented in separate library mods. The main advantage of this is that Rift can quickly update more quickly to newer Minecraft versions, and users will never need to use features that their mods don't need. Rift with no mods will always be just as fast, stable, and memory-efficient as vanilla Minecraft.
Making mods more vanilla-feeling
The Rift API does not provide hooks to modify existing game mechanics. Instead, it provides hooks to extend every aspect of the vanilla game (full list can be found below). Rift also encourages mods to be more integrated into vanilla Minecraft by using vanilla APIs whenever possible and sharing creative tabs and option menus with vanilla, reducing the difference the player sees between vanilla and modded content.
However, this does not mean that Rift mods are limited in any way. In fact, the opposite is true. Rift mods can change the way the game works in an even more flexible way than by only using Forge's API, through the use of Mixin, a simple annotation-based system for modifying vanilla code. Mods can inject callbacks to their methods at any point in any vanilla method, or replace vanilla methods or sections of them with their own code. Mixin also ensures that many mods can inject into the same method without reducing compatibility.
Making mods work in many Minecraft versions
With Rift, your mods will work throughout many Minecraft versions. Through optional mod compatibility modules, Rift will remap mods to updated obfuscated names and inject unimplemented vanilla methods back into classes, making the unstable Minecraft API stable. Although compatibility of all mods across many Minecraft versions may not be possible, most mods should work for at least a few versions.
Very fast and efficient
Whether it is installed as a Forge mod, or on its own, Rift will not slow down the game's loading time. Rift is based on interfaces rather than an event bus, so it will not load any additional libraries, event callbacks will be extremely fast, and adding your own mod event can be done in a few lines of code.
Unlike Forge, Rift's goal is to make modding more modular. Rift itself only provides features for extending the vanilla game, and more advanced APIs and features are provided by the community. Here are some solutions for a few common features:
- Networking: Rift API, ProtoCharset
- Configuration: Gson (vanilla library), Configurate, Random Configs, any other library you want
- Other language support: Riftlin (kotlin),
- Energy API: ZeroPoint
- Capabilities: Rift-Capabilities
- Alternative blockstate format: Under development, coming soon
- JSON-based GUIs: Under development, coming soon
- Annotation-based riftmod.json generation: Pylon
- Simple and extensible interface-based event system (mods can add their own events with only a few lines of code)
- Interfaces for registering item, blocks, tile entities, fluids, enchantments, particle types, potion effects, biomes, entities, tile entity renderers, custom item renderers, complex (non-json) recipes, dimensions, world types, and more
- Simple network API for easily adding both vanilla packets and mod messages
- Tick events called every client or server tick
- Support for both Mixin and other class transformers, allowing
- Automatic dependency downloading and extraction
- Partial dependencies on other mods, where some features are enabled only if another mod is present.