package de.tobiyas.racesandclasses.hotkeys;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerQuitEvent;
import de.tobiyas.racesandclasses.RacesAndClasses;
import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayer;
import de.tobiyas.racesandclasses.playermanagement.player.RaCPlayerManager;
import de.tobiyas.util.schedule.DebugBukkitRunnable;
public class HotkeyManager implements Listener {
/**
* The Inventory of the Players regarding the HotKeys
*/
private final Map<RaCPlayer,HotKeyInventory> inventories = new HashMap<RaCPlayer, HotKeyInventory>();
public HotkeyManager() {
Bukkit.getPluginManager().registerEvents(this, RacesAndClasses.getPlugin());
new Listener_HotKey();
new DebugBukkitRunnable("HotKeyManagerRefresh"){
@Override
protected void runIntern() {
for(HotKeyInventory inv : inventories.values()){
inv.updatePlayerInventory();
}
}
}.runTaskTimer(RacesAndClasses.getPlugin(), 20, 20);
}
/**
* Returns the Inventory of the Player.
*
* @param player to get for
*
* @return the inv of the player.
*/
public HotKeyInventory getInv(RaCPlayer player){
HotKeyInventory inv = inventories.get(player);
if(inv == null){
inv = new HotKeyInventory(player);
inventories.put(player, inv);
}
return inv;
}
/**
* Returns the Inventory of the Player.
*
* @param playerId to get for
*
* @return the inv of the player.
*/
public HotKeyInventory getInv(UUID playerId){
return getInv(RaCPlayerManager.get().getPlayer(playerId));
}
/**
* Returns the Inventory of the Player.
*
* @param player to get for
*
* @return the inv of the player.
*/
public HotKeyInventory getInv(Player player){
return getInv(RaCPlayerManager.get().getPlayer(player));
}
/**
* This will Reset ALL players to have Build invs.
*/
public void shutdown(){
for(RaCPlayer player : inventories.keySet()){
HotKeyInventory inv = inventories.get(player);
if(inv.isInSkillMode()) inv.changeToBuildInv();
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void playerLogout(PlayerQuitEvent event){
Player player = event.getPlayer();
HotKeyInventory inv = getInv(player);
//notify inv that the player has quit.
inv.changeToBuildInv();
}
}