#How to detect if there is a player passenger on an entity?

13 messages · Page 1 of 1 (latest)

median rock
#

Using this code as a base, how do I stop players riding on entities from changing dimensions? I've seen events for determining which specific entity a player is riding on, but I need a blanket if player is riding on an entity check, because if (!event.getEntity().player) return will still fire the code and teleport an entity to another dimension if a player is riding on it.
#1222634063559659661 message

late furnaceBOT
#

Once your ticket has been resolved, please close it with </ticket close:1054771505520717835> command!

severe viperBOT
#

[➤](#1222634063559659661 message)
startup_scripts/dimchange.js

ForgeEvents.onEvent("net.minecraftforge.event.entity.EntityTravelToDimensionEvent", (event) => {
    global.dimChangeEvent(event);
});```

server_scripts/dimchange.js
```js
global.dimChangeEvent = event => {
    if (!event.getEntity().player) return;
    let player = event.getEntity();
    let targetDimension = event.dimension.location();
    let server = player.server;

    if (targetDimension == 'minecraft:the_end') {
        if (!player.stages.has('end_access')) {
            player.statusMessage = Text.of("The portal doesn't seem to work...");
            server.schedule(2 * 1000, () => player.statusMessage = Text.of("You have not unlocked the ability to use this portal, please refer to the questbook!"));
            event.setCanceled(true);
        }
    }
}

This is a snippet of my code, it can be shortened / optimized but as it is, it's pretty readable and easy to see what's going on.
You can easily change it for your needs. Also, only works on Forge, sorry Fabric users 😛

This 100% works for me, it's based on game stage. You can check the player's hand or inventory to see if they have dirt.
This checks the target dimension, so even running a /execute in the_end run tp PLAYER ~ ~ ~ will fail if the user isn't holding dirt.

median rock
#

I assume I just slip the check in the same line as the player check... but not sure what the event is hmmm
if (!event.getEntity().player || event.passengerEventCheckHere) return

median rock
#

How to detect if there is a player passenger on an entity?

median rock
#

Can't find anything in documentation, I tried searching the discord, if(event.player.passenger == true) return; threw no errors but didn't work.

misty solar
#

So it should be

if(event.player.passenger) event.setCanceled(true);
median rock
# misty solar if you need to cancel a forge event, you need to use `event.setCanceled(true);`

Thank you, I tried adding this but it ended up throwing a server error when I tried to enter the portal on my own without riding anything. hmmm

[02Jun2025 08:06:49.636] [Server thread/ERROR] [net.minecraftforge.eventbus.EventBus/EVENTBUS]: Exception caught during firing event: TypeError: Cannot read property "passenger" from undefined (server_scripts:DimensionTravelRestrict.js#3)
Index: 4
Listeners:
0: NORMAL
1: ASM: com.lucasmellof.antiportals.events.EventCore@7cd950b0 onTeleport(Lnet/minecraftforge/event/entity/EntityTravelToDimensionEvent;)V
2: ASM: class tech.stystatic.dimensionlocalizedinventories.EventListener switchDimensionsMobEvent(Lnet/minecraftforge/event/entity/EntityTravelToDimensionEvent;)V
3: ASM: com.github.alexthe668.domesticationinnovation.server.CommonProxy@442a7a91 onEntityTravelToDimension(Lnet/minecraftforge/event/entity/EntityTravelToDimensionEvent;)V
4: net.minecraftforge.eventbus.EventBus$$Lambda$1626/0x000000080132c000@35ca0ca0
dev.latvian.mods.rhino.EcmaError: TypeError: Cannot read property "passenger" from undefined (server_scripts:DimensionTravelRestrict.js#3)

Though KubeJS isn't saying there are any errors, the above comes from the server latest.log

misty solar
#

that is a forge event without a player

#

try

if(event.entity.passenger) event.setCanceled(true);
median rock