--- a/net/minecraft/world/level/portal/DimensionTransition.java +++ b/net/minecraft/world/level/portal/DimensionTransition.java @@ -7,7 +7,19 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3D; -public record DimensionTransition(WorldServer newLevel, Vec3D pos, Vec3D speed, float yRot, float xRot, boolean missingRespawnBlock, DimensionTransition.a postDimensionTransition) { +// CraftBukkit start +import org.bukkit.event.player.PlayerTeleportEvent; + +public record DimensionTransition(WorldServer newLevel, Vec3D pos, Vec3D speed, float yRot, float xRot, boolean missingRespawnBlock, DimensionTransition.a postDimensionTransition, PlayerTeleportEvent.TeleportCause cause) { + + public DimensionTransition(WorldServer newLevel, Vec3D pos, Vec3D speed, float yRot, float xRot, boolean missingRespawnBlock, DimensionTransition.a postDimensionTransition) { + this(newLevel, pos, speed, yRot, xRot, missingRespawnBlock, postDimensionTransition, PlayerTeleportEvent.TeleportCause.UNKNOWN); + } + + public DimensionTransition(PlayerTeleportEvent.TeleportCause cause) { + this(null, Vec3D.ZERO, Vec3D.ZERO, 0.0F, 0.0F, false, DO_NOTHING, cause); + } + // CraftBukkit end public static final DimensionTransition.a DO_NOTHING = (entity) -> { }; @@ -15,11 +27,21 @@ public static final DimensionTransition.a PLACE_PORTAL_TICKET = DimensionTransition::placePortalTicket; public DimensionTransition(WorldServer worldserver, Vec3D vec3d, Vec3D vec3d1, float f, float f1, DimensionTransition.a dimensiontransition_a) { - this(worldserver, vec3d, vec3d1, f, f1, false, dimensiontransition_a); + // CraftBukkit start + this(worldserver, vec3d, vec3d1, f, f1, dimensiontransition_a, PlayerTeleportEvent.TeleportCause.UNKNOWN); + } + + public DimensionTransition(WorldServer worldserver, Vec3D vec3d, Vec3D vec3d1, float f, float f1, DimensionTransition.a dimensiontransition_a, PlayerTeleportEvent.TeleportCause cause) { + this(worldserver, vec3d, vec3d1, f, f1, false, dimensiontransition_a, cause); } public DimensionTransition(WorldServer worldserver, Entity entity, DimensionTransition.a dimensiontransition_a) { - this(worldserver, findAdjustedSharedSpawnPos(worldserver, entity), Vec3D.ZERO, 0.0F, 0.0F, false, dimensiontransition_a); + this(worldserver, entity, dimensiontransition_a, PlayerTeleportEvent.TeleportCause.UNKNOWN); + } + + public DimensionTransition(WorldServer worldserver, Entity entity, DimensionTransition.a dimensiontransition_a, PlayerTeleportEvent.TeleportCause cause) { + this(worldserver, findAdjustedSharedSpawnPos(worldserver, entity), Vec3D.ZERO, 0.0F, 0.0F, false, dimensiontransition_a, cause); + // CraftBukkit end } private static void playPortalSound(Entity entity) {