kyrptonaught / customportalapi

Developer Api for creating custom portals to any dimension
MIT License
63 stars 22 forks source link

Custom Portal Api

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

Some example of portals
p p

Usage:

Versions:

1.16 Maven metadata URL
1.17 Maven metadata URL
1.18 Maven metadata URL
1.19.X Maven metadata URL
1.19.3 Maven metadata URL
1.19.4 Maven metadata URL
1.20 Maven metadata URL
1.20.2 Maven metadata URL
1.20.4 Maven metadata URL
1.20.5 Maven metadata URL
1.20.6 Maven metadata URL
1.21 Maven metadata URL

Add the repository to your build.gradle.

repositories {
  // ... any other repositories in this block, as needed
  maven {url = "https://maven.kyrptonaught.dev"}
}

Add the dependency to your build.gradle.

dependencies {
  // ... your other dependencies in this block, as needed
  modImplementation 'net.kyrptonaught:customportalapi:<version>'
  include 'net.kyrptonaught:customportalapi:<version>'
}

Now onto creating and registering the portal itself, this is very simple thanks to the CustomPortalBuilder class. We will make use of this in your mod initializer.

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(Identifier.of("the_end"))  
        .tintColor(45,65,101)  
        .registerPortal();

A nether portal would be registered as follows:

CustomPortalBuilder.beginPortal()  
        .frameBlock(Blocks.OBSIDIAN)  
        .destDimID(Identifier.of("the_nether"))  
        .tintColor(131, 66, 184)  
        .registerPortal();

CustomPortalBuilder is filled with plenty of methods to customize the functionality of your portal, all of which are documented in the class.

Some noteworthy methods to mention: