Custom Portal API Reforged
Library mod allowing developers to create portals to their custom dimensions easily. These custom portals will function exactly like nether portals, except being fully customizable. You can control the frame block, portal block, tinting, ignition source, destination, and more!

Usage
Add the repository/mod to your build.gradle.
repositories {
maven {url 'https://maven.azuredoom.com/mods'}
}
dependencies {
//1.20.1
implementation fg.deobf('net.kyrptonaught.customportalapi:customportalapi-reforged:MODVERSION')
//1.20.2+
implementation fg.deobf("net.kyrptonaught.customportalapi:cpapireforged-neo-1.20.2:MODVERSION")
}
Now onto creating and registering the portal itself, this is simple thanks to the CustomPortalBuilder class. We will make use of this in FMLCommonSetupEvent.
The following is a very simple portal that will take us to The End, and is lit by right-clicking the frame with an Eye of Ender:
CustomPortalBuilder.beginPortal()
.frameBlock(Blocks.DIAMOND_BLOCK)
.lightWithItem(Items.ENDER_EYE)
.destDimID(new ResourceLocation("the_end"))
.tintColor(45,65,101)
.registerPortal();
A Nether portal would be registered as follows:
CustomPortalBuilder.beginPortal()
.frameBlock(Blocks.OBSIDIAN)
.destDimID(new ResourceLocation("the_nether"))
.tintColor(131, 66, 184)
.registerPortal();
Some noteworthy methods to mention:
- lightWithWater/Item/Fluid - These allow you to control how the portal is lit.
- onlyLightInOverworld - Only allow the portal to be used in the overworld to your destination of choice
- flatPortal - Flat Portal similar to the End or the Twilight Forest portal.
Based off the main Fabric mod HERE and an older ported mod HERE
All Versions
+ Add Version- Ported to 1.21.10 (Thanks to AnonymousHacker1279)
- Ported to 1.21.9
### ✨ New Features
- Added Ignite Events**
- Implemented
PortalIgniteEventandPortalPreIgniteEventinterfaces. - Included corresponding handlers and invokers.
- 🔧 These events allow:
- Executing custom logic *before* and *after* portal ignition.
- Cancelling the ignition entirely, if desired.
- Player Entity in Ignite Context**
- The player is now included as part of the **ignition source** in item-use events.
- ✅ Matches upstream behavior.
- 🔍 Enables event consumers to identify which player attempted to light the portal.
### ⚠️ Breaking Change
- Fixed Item Usage Behavior on Failed Portal Lighting**
customportalapi-reforgedpreviously cancelled item usage **when ignition failed**, which is **opposite** of upstream behavior.- This has been reversed: **item usage is now only cancelled if the portal is successfully lit**.
- Example: Using an **Eye of Ender** to light a portal will no longer cause it to fly off and possibly break—it will be consumed *only* when ignition succeeds.
Credit murderspagurder for this PR!
- Ported to 1.21.6 - Credit to AnonymousHacker1279
- Major rewrite/rework to mod for 1.21.5 as of https://github.com/AzureDoom/customportalapi-reforged/pull/25 - Credit to AnonymousHacker1279
- Change registering portals to an event on the mod bus - Wolfieboy09
- Update the wiki for these changes - Wolfieboy09
- Move to RuntimeException over logging an error to get the user's attention on why it won't work - Wolfieboy09
- Code cleanup - Wolfieboy09
- Fixes portal colors.
- Fix ResourceLocationException errors - AnonymousHacker1279
- Ported to 1.21.1
- Fire post teleport event again - AnonymousHacker1279
- Adds min/max dim height checks for Portal generation.
- Clean up unused code/formarted existing code.
- Adds min/max dim height checks for Portal generation.
- Clean up unused code/formarted existing code.
- Adds min/max dim height checks for Portal generation.
- Clean up unused code/formarted existing code.
- NeoForge 1.20.6, thanks to AnonymousHacker1279.
- Fixes custom particles/sounds not working. Thanks AnonymousHacker1279!
- Backported Fixes custom particles/sounds not working. Thanks AnonymousHacker1279!
- Backported Fixes custom particles/sounds not working. Thanks AnonymousHacker1279!
- NeoForge Network Update, thanks to AnonymousHacker1279.
- 1.20.4 thanks to PR.
- Mixin remap fix.
- Mixin remap fix.
- Mixin remap fix.
- First Release.