# ============================================================
# pid:db/sync_existing  （macro 函式，由 pid:db/get_pid 呼叫）
# macro 參數（來自 pid:temp）：
#   $(player_uuid) → 要查詢的玩家 UUID，格式 [I;a,b,c,d]
# 執行者（@s）：需要同步 PID 的玩家
# 功能：從 DB 讀取此玩家的 PID，寫入計分板
# 使用場景：資料包重新載入後計分板被清空、伺服器重啟、玩家重新加入
# ============================================================

# 從 DB 中找到對應 UUID 的紀錄，取出其 pid 欄位存入暫存區
# players[{uuid:$(player_uuid)}] 精確找到對應的 DB 紀錄
# .pid 取出該紀錄的 pid 欄位值（int 類型）
$data modify storage pid:temp pid set from storage pid:db players[{uuid:$(player_uuid)}].pid

# 從 DB 取出舊名稱，供 clear_old_name 清除計分板上的舊名稱條目
$data modify storage pid:temp name set from storage pid:db players[{uuid:$(player_uuid)}].name

# 清除舊名稱在計分板上的殘留分數（玩家改名時需要）
function pid:db/clear_old_name with storage pid:temp

# 將暫存區的 pid 值寫回 @s 的 playerID 計分板
# execute store result score：將指令的返回值存入計分板分數
# data get storage pid:temp pid 1：讀取 pid:temp.pid，乘數 1 不做縮放
execute store result score @s playerID run data get storage pid:temp pid 1

function pid:player/get_name

# 以當前登入名稱更新 DB 中的 name 欄位（確保 DB 始終保存最新名稱）
$data modify storage pid:db players[{uuid:$(player_uuid)}].name set from storage pid:temp player_name

function pid:db/clear_temp