Skip to content

Prevent Entity Travel to a Specific Dimension

Main topics in this chapter: ForgeEvents and Forge's EntityTravelToDimensionEvent. All code in this chapter belongs in startup_scripts.

Full Code

js
const $EntityTravelToDimensionEvent = Java.loadClass("net.minecraftforge.event.entity.EntityTravelToDimensionEvent")

ForgeEvents.onEvent($EntityTravelToDimensionEvent, event => {
    let resourceKey = event.dimension;
    if (resourceKey.getPath() == "the_nether") {
        event.setCanceled(true)
    }
})

The code above checks whether the target dimension is the Nether. If so, it cancels the event and blocks dimension travel.

Stage Restriction

Stage restriction is mainly for players, because only players have stages.

js
const $EntityTravelToDimensionEvent = Java.loadClass("net.minecraftforge.event.entity.EntityTravelToDimensionEvent")
const $ServerPlayer = Java.loadClass("net.minecraft.server.level.ServerPlayer")

ForgeEvents.onEvent($EntityTravelToDimensionEvent, event => {
    let resourceKey = event.dimension;
    /**
     * @type {Internal.ServerPlayer}
     */
    let player = event.entity;
    if (resourceKey.getPath() == "the_nether") {
        if (player instanceof $ServerPlayer){
            if (!player.stages.has("nether")){
                event.setCanceled(true)
            }
        }
    }
})