package me.loganbwde.KostenlosSchild;

import java.util.ArrayList;
import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.block.Block;
import org.bukkit.block.Sign;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.command.PluginCommand;
import org.bukkit.craftbukkit.Main;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.plugin.java.JavaPlugin;


public class main extends JavaPlugin implements Listener, CommandExecutor 
{
	PlayerInteractEvent event1;
	String name = event1.getPlayer().getDisplayName();
	ArrayList<String> Players = new ArrayList<String>();
	Player player1 = event1.getPlayer();
	 public int zahl;
	 public int task;;
	 public void ZahlMinus()
	 {
		 zahl--;
	 }
	 public void setZahl(int start)
	 {
		 zahl = start;
	 }
	@Override
	public void onEnable()
	{
		this.getServer().getPluginManager().registerEvents(this, this);
		loadConfig();
		System.out.println("[KostenlosSchild] Plugin aktiviert.");	
	}
	public void onDisable()
	{
		System.out.println("[KostenlosSchild] Plugin deaktiviert.");	
	}
	
	String prefix = getConfig().getString("Config.prefix");
	String noperm = getConfig().getString("Config.noperm");
	String missingid = getConfig().getString("Config.missingid");
	String missingnumber = getConfig().getString("Config.missingnumber");
	String error = getConfig().getString("Config.error");
	String zeit1 = getConfig().getString("Config.time1");
	String zeit2 = getConfig().getString("Config.time2");
	
	@EventHandler
	 public void onSignCreate(SignChangeEvent event)
	 {
	   Player p = event.getPlayer();
	   if (event.getLine(0).equalsIgnoreCase(prefix))
	   {
		   if (!p.hasPermission("KostenlosSchild.create"))
		   {
			   p.sendMessage(ChatColor.translateAlternateColorCodes('&', noperm));
			   event.getBlock().setType(Material.AIR);
			   return;
		   }
	       if (event.getLine(1).equals(""))
	       {
	           p.sendMessage(ChatColor.translateAlternateColorCodes('&', missingid));
	    	   event.getBlock().setType(Material.AIR);
	    	   return;
	       }
	       if (event.getLine(2).equals(""))
	       {
	           p.sendMessage(ChatColor.translateAlternateColorCodes('&', missingnumber));
	    	   event.getBlock().setType(Material.AIR);
	    	   return;
	       }
	      event.setLine(0, "§b" + prefix);
	      //event.setLine(1, "§c" + id);
	      Sign schild = (Sign)event.getBlock().getState();
	      schild.update(true);
	   }
	 }
	  
	@EventHandler
	  public void onInteract(PlayerInteractEvent event)
	  {
	    Player p = event.getPlayer();
	    if ((event.getAction() == Action.RIGHT_CLICK_BLOCK) && (event.getClickedBlock().getState() instanceof Sign))
	    {
	      Sign schild = (Sign)event.getClickedBlock().getState();
	      if (schild.getLine(0).equalsIgnoreCase("§b" + prefix)) {
	        try
	        {
	          if (!p.hasPermission("KostenlosSchild.benutzen"))
	          {
	        	  p.sendMessage(ChatColor.translateAlternateColorCodes('&', noperm));
	        	  return;
	          }
	          int id = Integer.parseInt(schild.getLine(1));
	          int number = Integer.parseInt(schild.getLine(2));
	          //mat = Material.getMaterial(id);
	          if(Players.contains(name))
	          {
	        	  startCountdown();
	          }
	          else
	          {
	        	  Players.add(name);
	        	  p.openInventory(createInventory(id,number));
	          }
	        }
	        catch (NumberFormatException e)
	        {
	          p.sendMessage(error);
	        }
	      }
	    }
	  }
	  
	  @SuppressWarnings("deprecation")
	public Inventory createInventory(int id,int number)
	  {
	    Inventory invent = Bukkit.createInventory(null, 9);
	    for (int i = 0; i < invent.getSize(); i++) 
	    {
	    	invent.setItem(4, new ItemStack(id, number));
	    }
	    return invent;
	  }
	  public void loadConfig()
	  {
		  getConfig().options().copyDefaults(true);
		  saveConfig();
	  }
	 public void startCountdown()
	 {
		 setZahl(5);
		 task = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() 
		 {
			 public void run() 
			 {
				 if(zahl < 0) 
				 {  
					 Bukkit.getScheduler().cancelTask(task);
	             }
				 if(zahl == 0) 
				 {
	                 Players.remove(name);
	             }
				 if(zahl > 0)
				 {
					 player1.sendMessage(ChatColor.translateAlternateColorCodes('&', zeit1 + " " + zahl + " " + zeit2));
				 }
			 }
		 }, 20, 20);
	 }
}
