Source Code

package me.lol768.tools;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class required extends JavaPlugin implements  Listener
{
	Logger log;
	
	List<Player> allowed = new ArrayList<Player>();
	  public void onEnable()
	  {
		 log = this.getLogger();
	        log.info("requiredTools is now active");
	        getServer().getPluginManager().registerEvents(this, this);
	        if (!this.getConfig().contains("enforce.0"))
	        {
	        	this.getConfig().set("enforce.0", "default,270");
	        	this.saveConfig();
	        	log.info("requiredTools has generated a config file");
	        }
	  }
	  
	  public void loadBlocks()
	  {
		  this.reloadConfig();
	  }
	  public void onDisable()
	  {
		  	
	        log.info("requiredTools is now shutting down...");
	        getServer().getPluginManager().registerEvents(this, this);
	  }
	  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
	    {
	    	if(cmd.getName().equalsIgnoreCase("treload"))
	    	{ 
	    		loadBlocks();
	    		sender.sendMessage(ChatColor.GREEN + "Config reloaded successfully!");
	    	}
	    	
	    	if(cmd.getName().equalsIgnoreCase("tools"))
	    	{ 
	    		if (args.length == 1 && sender instanceof Player)
	    		{
	    			if (!sender.hasPermission("toolsrequired.alter"))
	    			{
	    				sender.sendMessage(ChatColor.RED + "You need toolsrequired.alter");
	    			}
	    			else
	    			{
	    				if (args[0].equalsIgnoreCase("on"))
	    				{
	    					Player p = (Player)sender;
	    					allowed.add(p);
	    					sender.sendMessage(ChatColor.GREEN + "Added exception rule for " + p.getName());
	    				}
	    				else
	    				{
	    					Player p = (Player)sender;
	    					allowed.remove(p);
	    					sender.sendMessage(ChatColor.GREEN + "Removed exception rule for " + p.getName());
	    				}
	    			}
	    		}
	    		
	    		if (args.length == 2)
	    		{
	    			if (!sender.hasPermission("toolsrequired.alter"))
	    			{
	    				sender.sendMessage(ChatColor.RED + "You need toolsrequired.alter");
	    			}
	    			else
	    			{
	    				if (args[0].equalsIgnoreCase("on"))
	    				{
	    					try
	    					{
	    						Player p = Bukkit.getPlayer(args[1]);
		    					allowed.add(p);
		    					sender.sendMessage(ChatColor.GREEN + "Added exception rule for " + p.getName());
	    					}
	    					catch (Exception e)
	    					{
	    						sender.sendMessage(ChatColor.RED + "Player may be offline or malformed command");
	    						sender.sendMessage(ChatColor.RED + "Syntax: /tools on player_name");
	    						
	    					}
	    					
	    				}
	    				else
	    				{
	    					try
	    					{
	    						Player p = Bukkit.getPlayer(args[1]);
		    					allowed.remove(p);
		    					sender.sendMessage(ChatColor.GREEN + "Removed exception rule for " + p.getName());
	    					}
	    					catch (Exception e)
	    					{
	    						sender.sendMessage(ChatColor.RED + "Player may be offline or malformed command");
	    						sender.sendMessage(ChatColor.RED + "Syntax: /tools off player_name");
	    						
	    					}
	    				}
	    			}
	    		}
	    		
	    		if (args.length != 1 && args.length != 2)
	    		{
	    			sender.sendMessage(ChatColor.RED + "Malformed command");
	    		}
	    	}
			return true;
	    }
	  @EventHandler
	  public void blockBreak(BlockBreakEvent e)
	  {
		  try
		  {
			  if (!allowed.contains(e.getPlayer()))
			  {
				  if (this.getConfig().contains("enforce." + e.getBlock().getTypeId()))
				  {
					  Player p = e.getPlayer();
					  String raw = this.getConfig().getString("enforce." + e.getBlock().getTypeId());
					  String[] split = raw.split(",");
					  int i = 0;
					  String required = "unknown";
					  boolean ok = false;
					  for (String s: split)
					  {
						  if (i == 0)
						  {
							  //Item message
							  required = s;
						  }
						  else
						  {
							  if(p.getItemInHand() != null)
							  {
								  if (p.getItemInHand().getTypeId() == Integer.parseInt(s))
								  {
									  ok = true;
								  }
							  }
						  }
						  i++;
						  
					  }
					  if (!ok)
					  {
						  Material m = e.getBlock().getType();
						  p.sendMessage(ChatColor.RED + "You must use the correct tool for this block: " + required);
						  e.setCancelled(true);
					  }
				  }
				
			  }
		  }
		  catch (Exception ex)
		  {
			  e.getPlayer().sendMessage(ChatColor.RED + "Something went wrong. Sorry about that.");
			  log.severe(ex.getMessage());
		  }
	  }
}

Comments

Posts Quoted:
Reply
Clear All Quotes