package de.ryzox.mobile_stuff;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

import de.ryzox.mobile_stuff.cmds.help;

public class Mobile_stuff extends JavaPlugin implements CommandExecutor {
	
	private static Mobile_stuff plugin;
	public static Mobile_stuff getPlugin(){
		return plugin;
	}
		//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
		@Override
		public void onEnable() {
			this.plugin = plugin;
			
			loadConfig();
				
			getCommand("mobilestuff").setExecutor(new help());
			
		    System.out.println("[Mobile stuff] Mobile stuff has been activated!");
		    
		    saveDefaultConfig();
		    
		    }
		//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
		@Override
		public void onDisable() {
			System.out.println("[Mobile stuff] Mobile stuff was disabled!");
		}
		
		@Override
		public void onLoad() {
			System.out.println("[Mobile stuff] was reloaded!");
		}
		//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
		public void loadConfig() {
			
			getConfig().options().copyDefaults(true);
			saveConfig();

		}
		//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~	
		
		@Override
		public boolean onCommand(CommandSender sender, Command cmd, String label, String[] arg) {
			
			if(cmd.getName().equalsIgnoreCase("workbench")) {
		
	        	if(sender instanceof ConsoleCommandSender){
	        		System.out.println("[Mobile stuff] This command can not be used in the console!");
	        	
	        	}else{
					
					if(sender instanceof Player) {
						
							Player p = (Player)sender;
				
	        			if(p.hasPermission("p.workbench")) {
					
	        			String open = getConfig().getString("Config.workbench-open-message");
								
	        			p.sendMessage(ChatColor.translateAlternateColorCodes('&', open));

	        			p.openWorkbench(null, true);
	        	
				}else{
				
						String error = getConfig().getString("Config.workbench-error-message");
				
						p.sendMessage(ChatColor.translateAlternateColorCodes('&', error));
				}
			//################################################################################################		
				}else if(cmd.getName().equalsIgnoreCase("enderchest")) {
					
						if(sender instanceof ConsoleCommandSender){
							System.out.println("[Mobile stuff] This command can not be used in the console!");
			        	
			        }else{
					
			        	if(sender instanceof Player) {
			        		
			        				Player p = (Player)sender;
						
			        		if(p.hasPermission("p.enderchest")) {
						
			        			String open1 = getConfig().getString("Config.enderchest-open-message");
						
			        			p.sendMessage(ChatColor.translateAlternateColorCodes('&', open1));

			        			p.openInventory(p.getEnderChest());
						
				}else{
						
						String error1 = getConfig().getString("Config.enderchest-error-message");
						
						p.sendMessage(ChatColor.translateAlternateColorCodes('&', error1));
				}
			//################################################################################################
				}else if(cmd.getName().equalsIgnoreCase("ms-reload")) {
					
					if(sender instanceof ConsoleCommandSender){
						
						System.out.println("Mobile stuff was reloaded");
						
						Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("MobileStuff");
						plugin.reloadConfig();
						
				}else{	
						
						if(sender instanceof Player) {
							
								Player p = (Player)sender;
							
						if(p.hasPermission("p.ms-reload")) {
							
						p.sendMessage("§7~§2Mobile Stuff §awas reloaded§7~");
						
						Plugin plugin = Bukkit.getServer().getPluginManager().getPlugin("MobileStuff");
								plugin.reloadConfig();
								
						}else{
							
							String error2 = getConfig().getString("Config.reload-error-message");
							
							p.sendMessage(ChatColor.translateAlternateColorCodes('&', error2));
						}	
						//################################################################################################
			
						}
						
				}
					
				}
			        	
			        }
						
				}
	        		
	        	}
	        	
			}
			
			return false;
			
		}
		
}