Package de.diddiz.superpickaxe

Source Code of de.diddiz.superpickaxe.Superpickaxe

package de.diddiz.superpickaxe;

import static org.bukkit.Bukkit.getPluginCommand;
import static org.bukkit.Bukkit.getPluginManager;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockDamageEvent;
import org.bukkit.event.player.PlayerChangedWorldEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import com.nijiko.permissions.PermissionHandler;
import com.nijikokun.bukkit.Permissions.Permissions;
import de.diddiz.LogBlock.Consumer;
import de.diddiz.LogBlock.LogBlock;

public class Superpickaxe extends JavaPlugin implements Listener
{
  private PermissionHandler permissions = null;
  private final Set<String> playerswithsp = new HashSet<String>();
  private Set<Integer> tools, dontBreak;
  private boolean disableDrops, disableToolWear, overrideWorldEditCommands;
  private Consumer consumer;

  @Override
  public void onEnable() {
    final PluginManager pm = getPluginManager();
    if (pm.getPlugin("Permissions") != null)
      permissions = ((Permissions)pm.getPlugin("Permissions")).getHandler();
    final Map<String, Object> def = new HashMap<String, Object>();
    def.put("overrideWorldEditCommands", false);
    def.put("tools", Arrays.asList(270, 274, 278, 285));
    def.put("dontBreak", Arrays.asList(7));
    def.put("disableDrops", false);
    def.put("disableToolWear", false);
    final FileConfiguration config = getConfig();
    for (final Entry<String, Object> e : def.entrySet())
      if (!config.contains(e.getKey()))
        config.set(e.getKey(), e.getValue());
    saveConfig();
    final ConfigurationSection cfg = getConfig();
    tools = new HashSet<Integer>(cfg.getIntegerList("tools"));
    dontBreak = new HashSet<Integer>(cfg.getIntegerList("dontBreak"));
    disableDrops = cfg.getBoolean("disableDrops", false);
    disableToolWear = cfg.getBoolean("disableToolWear", false);
    overrideWorldEditCommands = cfg.getBoolean("overrideWorldEditCommands");
    if (disableDrops) {
      if (getPluginManager().isPluginEnabled("LogBlock"))
        consumer = ((LogBlock)getPluginManager().getPlugin("LogBlock")).getConsumer();
      else {
        getLogger().severe("[Superpickaxe] LogBlock not found");
        consumer = null;
      }
    } else
      consumer = null;
    pm.registerEvents(this, this);
    if (overrideWorldEditCommands) {
      getLogger().info("[Superpickaxe] Overriding WorldEdit commands");
      for (final String cmd : new String[]{"/", "superpickaxe"})
        if (getPluginCommand(cmd) != null)
          getPluginCommand(cmd).setExecutor(this);
    }
    getLogger().info("Superpickaxe v" + getDescription().getVersion() + " by DiddiZ enabled");
  }

  @Override
  public void onDisable() {
    getLogger().info("Superpickaxe disabled");
  }

  @Override
  public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    if (sender instanceof Player) {
      final Player player = (Player)sender;
      if (hasPermission(player, "superpickaxe.use")) {
        if (hasEnabled(player))
          removePlayer(player);
        else
          addPlayer(player);
      } else
        player.sendMessage(ChatColor.RED + "You aren't allowed to do this.");
    } else
      sender.sendMessage("You aren't a player");
    return true;
  }

  @EventHandler
  public void onBlockDamage(BlockDamageEvent event) {
    final Player player = event.getPlayer();
    final ItemStack tool = event.getItemInHand();
    if (!event.isCancelled() && hasEnabled(player) && tool != null && tools.contains(tool.getTypeId()) && !(dontBreak.contains(event.getBlock().getTypeId()) && !hasPermission(player, "superpickaxe.breakAll")))
      if (disableDrops && consumer != null) {
        consumer.queueBlockBreak(player.getName(), event.getBlock().getState());
        event.getBlock().setTypeId(0);
        event.setCancelled(true);
      } else {
        event.setInstaBreak(true);
        if (disableToolWear)
          tool.setDurability((short)(tool.getDurability() - 1));
      }
  }

  @EventHandler(priority = EventPriority.LOWEST)
  public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) {
    if (!event.isCancelled() && overrideWorldEditCommands) {
      final String msg = event.getMessage().toLowerCase();
      if (msg.equals("/") || msg.equals("//") || msg.equals("/,") || msg.equals("/sp")) {
        event.setMessage("dummy");
        event.setCancelled(true);
        getServer().dispatchCommand(event.getPlayer(), "spa");
      }
    }
  }

  @EventHandler(priority = EventPriority.MONITOR)
  public void onPlayerChangedWorld(PlayerChangedWorldEvent event) {
    final Player player = event.getPlayer();
    if (hasEnabled(player) && !hasPermission(player, "superpickaxe.use"))
      removePlayer(player);
  }

  void addPlayer(Player player) {
    playerswithsp.add(player.getName());
    player.sendMessage(ChatColor.GREEN + "StompzHammer enabled.");
  }

  void removePlayer(Player player) {
    playerswithsp.remove(player.getName());
    player.sendMessage(ChatColor.GREEN + "StompzHammer disabled.");
  }

  boolean hasEnabled(Player player) {
    return playerswithsp.contains(player.getName());
  }

  boolean hasPermission(CommandSender sender, String permission) {
    if (permissions != null && sender instanceof Player)
      return permissions.has((Player)sender, permission);
    return sender.hasPermission(permission);
  }
}
TOP

Related Classes of de.diddiz.superpickaxe.Superpickaxe

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.