#How to make it so that when entering the world, if the player is in a certain dimension, teleport hi

7 messages · Page 1 of 1 (latest)

slow ginkgo
#

I'm playing in my modpack and one mod has a nasty bug that the mods still can't fix. The bug is that if I left the server in a certain dimension, regardless of the coordinates, I cannot load into the world, minecraft just loads endlessly, and shows an error about OutOfMemory.
So, I'm thinking of bypassing this by writing a script that, when the player enters the server, would check if the player is in this dimension, and if so, teleport him to another dimension to a certain point, or to the spawn of the world.
However, I don't know how to do this, can you help me with this?

strong mulchBOT
#

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

weary star
#

you can use this event:

PlayerEvents.loggedIn(event => {
    const { server, player, level } = event
    if (/** check player in certain level(dimension) */) {
        //then teleport
    }
})
slow ginkgo
#

I made the following code. I entered the world twice, once in the ordinary world and the second time in what I needed. Judging by everything if works, but there is an error in the teleport command, can you tell me what is wrong here? And line 71 is the line with the teleportTo command, I just have comments written before this part of the code.

PlayerEvents.loggedIn(event => {
const { server, player, level } = event
if (level.dimension == 'dimensionalpocketsii:pocket') {
player.teleportTo(server.getLevel('minecraft:overworld'), level.SpawnX, level.SpawnY, level.SpawnZ, [], 0, 0)
}
})

cursive willowBOT
#

Paste version of latest.log from @slow ginkgo

weary star
#
[01лист.2024 11:40:34.891] [Server thread/ERROR] [KubeJS Server/]: FixIssueWith_DimensionalPockets.js#71: Error in 'PlayerEvents.loggedIn': Can't find method net.minecraft.server.level.ServerPlayer.m_6021_(net.minecraft.server.level.ServerLevel,dev.latvian.mods.rhino.Undefined,dev.latvian.mods.rhino.Undefined,dev.latvian.mods.rhino.Undefined,object,number,number).
[01лист.2024 11:40:34.896] [Server thread/ERROR] [KubeJS Server/]: …rhino.EvaluatorException: Can't find method net.minecraft.server.level.ServerPlayer.m_6021_(net.minecraft.server.level.ServerLevel,…rhino.Undefined,…rhino.Undefined,…rhino.Undefined,object,number,number). 

it seems like that the level provided by KubeJS event is null at this stage (stupid KJS), you might need to replace it with another level, like the one you got from server.getLevel('minecraft:overworld')

slow ginkgo
#

It seems that I finished it, the following script came out. Thank you for your help!

PlayerEvents.loggedIn(event => {
const { server, player, level } = event
if (level.dimension == 'dimensionalpocketsii:pocket') { // target dimension == bug dimension
let respawn = player.getRespawnPosition()
let respdimension = String(player.getRespawnDimension()).slice(34, -1)
console.log('KubJS_Fix_DimensionalPocket RespDim: ' + respdimension)
console.log('KubJS_Fix_DimensionalPocket RespPos: ' + respawn.x + ' ' + respawn.y + ' ' + respawn.z)
if (respdimension != 'dimensionalpocketsii:pocket') { //If respawn dimension don't equal target dimension than teleport to respawn cord
console.log('KubJS_Fix_DimensionalPocket TP to respawn pos: ' + respawn.x + ' ' + respawn.y + ' ' + respawn.z + '; in respawn dimension: ' + respdimension + '!')
player.teleportTo(server.getLevel(respdimension), respawn.x, respawn.y, respawn.z, [], 0, 0)
} else { // If respawn dimension is same as target dimension than teleport to specified cord
console.log('KubJS_Fix_DimensionalPocket TP to specified cord!')
player.teleportTo(server.getLevel('minecraft:overworld'), -133, 256, 101, [], 0, 0)
}
}
})