001package com.ericlam.mc.minigames.core.gamestats; 002 003import org.bukkit.OfflinePlayer; 004import org.bukkit.entity.Player; 005 006import javax.annotation.Nonnull; 007import java.util.Map; 008import java.util.concurrent.CompletableFuture; 009 010/** 011 * 遊戲玩家資料處理機制接口 012 */ 013public interface GameStatsHandler { 014 015 /** 016 * 定義如何加載遊戲玩家資料 017 * 018 * @param player 玩家 019 * @return 遊戲玩家資料實作容器 020 */ 021 @Nonnull 022 GameStatsEditor loadGameStatsData(@Nonnull Player player); 023 024 /** 025 * 定義如何保存遊戲玩家資料 026 * 027 * @param player 玩家 028 * @param gameStats 遊戲玩家資料 029 * @return 異步運行 030 */ 031 CompletableFuture<Void> saveGameStatsData(OfflinePlayer player, GameStats gameStats); 032 033 /** 034 * 定義如何保存所有遊戲玩家資料 035 * 036 * @param gameStatsMap 遊戲玩家資料列表 037 * @return 異步運行 038 */ 039 CompletableFuture<Void> saveGameStatsData(Map<OfflinePlayer, GameStats> gameStatsMap); 040 041}