001package com.ericlam.mc.minigames.core.arena; 002 003import org.bukkit.configuration.file.FileConfiguration; 004import org.bukkit.entity.Player; 005 006import javax.annotation.Nonnull; 007 008/** 009 * 讓使用者註冊的場地設置機制 010 */ 011public interface ArenaMechanic { 012 013 /** 014 * 定義如何加載場地 015 * 016 * @param yml 場地文件 017 * @param info 場地基本資訊 018 * @return Arena 實作容器 019 */ 020 CreateArena loadCreateArena(FileConfiguration yml, Arena info); 021 022 /** 023 * 定義如何創建場地 024 * 025 * @param name 場地名稱 026 * @param player 創建該場地的玩家 027 * @return 新的 Arena 實作容器 028 */ 029 CreateArena createArena(@Nonnull final String name, @Nonnull final Player player); 030 031 /** 032 * 保存額外的場地設定 033 * 034 * @param preSaveYml 即將會被儲存的場地文件 035 * @param arena Arena 容器 036 */ 037 void saveExtraArenaSetting(FileConfiguration preSaveYml, Arena arena); 038 039}