チャットでスコア作成
/scoreboard objectives add entity_num dummy
各スポーン地点で以下のコマンドをチャットで実行
/execute align xyz run summon marker ~0.5 ~ ~0.5 {Tags:[spawnpoint]}
/forceload add ~ ~
注意:markerは一度召喚するとコマンドを使わない限り場所を確認できないので、お好みで次のようにarea_effect_cloudに変えても構いません。
/execute align xyz run summon area_effect_cloud ~0.5 ~ ~0.5 {Radius:0.0f,custom_particle:{type:dust,color:0,scale:0.01},Duration:-1,WaitTime:0,Tags:[spawnpoint]}
area_effect_cloudの場合は、F3+Bを押すと向きが表示されるので場所を確認できますが、markerよりも処理が重くなっています。
(どちらの場合でも一度召喚したmarkerやarea_effect_cloudを消すには/killコマンドが必要になります。)
コマンドブロック又はfunction (functionの場合は先頭の/を消してください。)
/scoreboard players set @a entity_num 0
/execute as @a[sort=random] store result score @s entity_num if entity @a[scores={entity_num=0}]
/scoreboard players set @e[tag=spawnpoint] entity_num 0
/execute as @e[tag=spawnpoint,sort=random] store result score @s entity_num if entity @e[tag=spawnpoint,scores={entity_num=0}]
/execute as @a at @e[tag=spawnpoint] if score @s entity_num = @n[tag=spawnpoint] entity_num run tp @s ~ ~ ~