001package com.ericlam.mc.minigames.core.registable; 002 003import com.ericlam.mc.minigames.core.SectionTask; 004import com.ericlam.mc.minigames.core.arena.ArenaConfig; 005import com.ericlam.mc.minigames.core.arena.ArenaMechanic; 006import com.ericlam.mc.minigames.core.character.GamePlayerHandler; 007import com.ericlam.mc.minigames.core.gamestats.GameStatsHandler; 008import com.hypernite.mc.hnmc.core.managers.builder.AbstractInventoryBuilder; 009import com.hypernite.mc.hnmc.core.misc.commands.DefaultCommand; 010import org.bukkit.plugin.java.JavaPlugin; 011 012import javax.annotation.Nonnull; 013 014/** 015 * 強制註冊類,必須註冊所有遊戲才會被激活。 016 */ 017public interface Compulsory { 018 019 /** 020 * 註冊大堂倒數程序 021 * 022 * @param task 遊戲程序 023 */ 024 void registerLobbyTask(SectionTask task); 025 026 /** 027 * 註冊遊戲結束程序 028 * 029 * @param task 遊戲程序 030 */ 031 void registerEndTask(SectionTask task); 032 033 /** 034 * 註冊場地創建主指令, 創建後將會自動幫你把 {@link com.ericlam.mc.minigames.core.manager.ArenaCreateManager} 的操作全部加到這個主指令內。 035 * 036 * @param defaultCommand 根指令 037 * @param plugin 插件實例 038 */ 039 void registerArenaCommand(DefaultCommand defaultCommand, final JavaPlugin plugin); 040 041 /** 042 * 註冊場地設定 043 * 044 * @param arenaConfig 場地設定 045 */ 046 void registerArenaConfig(@Nonnull ArenaConfig arenaConfig); 047 048 /** 049 * 註冊場地設置機制 050 * 051 * @param arenaMechanic 場地設置機制 052 */ 053 void registerArenaMechanic(@Nonnull ArenaMechanic arenaMechanic); 054 055 /** 056 * 註冊遊戲玩家管理機制 057 * 058 * @param gamePlayerHandler 遊戲玩家管理機制 059 */ 060 void registerGamePlayerHandler(@Nonnull GamePlayerHandler gamePlayerHandler); 061 062 /** 063 * 註冊遊戲玩家資料管理機制 064 * 065 * @param gameStatsHandler 遊戲玩家資料管理機制 066 */ 067 void registerGameStatsHandler(@Nonnull GameStatsHandler gameStatsHandler); 068 069 /** 070 * 註冊投票界面 071 * 072 * @param inventoryBuilder 背包建造器 073 * @param allowSlot 地圖投票物品 slot 074 */ 075 void registerVoteGUI(AbstractInventoryBuilder inventoryBuilder, Integer... allowSlot); 076}