▶ [Set on 'repeat' and 'always active'] The first command (the one at the bottom) generates portal particles in the coordinates you specify. You will need to change "X Y Z" with the coordinates from your world. Adding "force" at the end of a /particle command will make the particles visible from any distance while if you do not force the particles, they can be viewed only from a distance of maximum 16 blocks.


 ▶ [Set on 'chain' and 'always active'] The second command teleports all palyers that are in the portal, to a different location specified by you. You will need to replace the "X Y and Z" inside the square brackets with the coordinates of the portal and the other "X Y and Z" with the coordinates of the place you want the player to be teleported in.


 ▶ [Set on 'chain', 'conditional' and 'always active'] The third command plays a simple teleportation sound. Make sure to change X Y Z with the coordinates of the place the player gets teleported to. Do not replace them with the coordinates of the portal. Since this command block is set to "conditional", the sound will be played only if the previous command block received a redstone signal. Therefore the sound is played only when a player is teleported.


 ▶ [Set on 'chain', 'conditional' and 'always active'] The fourth command block gives a nausea effect to all players that pass through the portal. Make sure to replace X Y Z with the same coordinates you used for the /playsound command.

CUSTOM PORTALS

/playsound entity.endermen.teleport hostile @a[X,Y,Z] ~ ~ ~ 10 1

/tp @a[X,Y,Z,1] X Y Z

This small command modification allows you to make working custom portals into your vanilla Minecraft worlds.

/effect @a[X,Y,Z] nausea 6 1 true

/particle portal X Y Z 0 1 0 .7 35 force