Package org.shininet.bukkit.playerheads

Source Code of org.shininet.bukkit.playerheads.PlayerHeads

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

package org.shininet.bukkit.playerheads;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.logging.Logger;

import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.PlayerInventory;
import org.bukkit.plugin.java.JavaPlugin;

/**
* @author meiskam
*/

public final class PlayerHeads extends JavaPlugin implements Listener {
 
  private PlayerHeadsCommandExecutor commandExecutor;
  private PlayerHeadsListener listener;
 
  public static enum configType {DOUBLE, BOOLEAN};
  @SuppressWarnings("serial")
  public static final Map<String, configType> configKeys = new HashMap<String, configType>(){
    {
      put("pkonly", configType.BOOLEAN);
      put("droprate", configType.DOUBLE);
      put("lootingrate", configType.DOUBLE);
      put("clickinfo", configType.BOOLEAN);
      put("mobpkonly", configType.BOOLEAN);
      put("creeperdroprate", configType.DOUBLE);
      put("zombiedroprate", configType.DOUBLE);
      put("skeletondroprate", configType.DOUBLE);
      put("fixcase", configType.BOOLEAN);
      put("autoupdate", configType.BOOLEAN);
      put("broadcast", configType.BOOLEAN);
    }
  };
  public static final String configKeysString = implode(configKeys.keySet(), ", ");
  //public Map<String, Object> configMap = new HashMap<String, Object>();
  public Logger logger;
  public FileConfiguration configFile;
  private static boolean updateReady = false;
  private static String updateName = "";
  private static long updateSize = 0;
  private static final String updateSlug = "player-heads";
 
  @Override
  public void onLoad(){
    Utils.init();
  }

  @Override
  public void onEnable(){
    logger = getLogger();
    configFile = getConfig();
    configFile.options().copyDefaults(true);
    saveDefaultConfig();
    try {
        Metrics metrics = new Metrics(this);
        metrics.start();
    } catch (Exception e) {
      logger.warning("Failed to start Metrics");
    }
    try {
      if (configFile.getBoolean("autoupdate") && !(updateReady)) {
        Updater updater = new Updater(this, updateSlug, this.getFile(), Updater.UpdateType.NO_DOWNLOAD, false); // Start Updater but just do a version check
        updateReady = updater.getResult() == Updater.UpdateResult.UPDATE_AVAILABLE; // Determine if there is an update ready for us
        updateName = updater.getLatestVersionString(); // Get the latest version
        updateSize = updater.getFileSize(); // Get latest size
      }
    } catch (Exception e) {
      logger.warning("Failed to start Updater");
    }
    listener = new PlayerHeadsListener(this);
    commandExecutor = new PlayerHeadsCommandExecutor(this);
    getServer().getPluginManager().registerEvents(listener, this);
    getCommand("PlayerHeads").setExecutor(commandExecutor);
  }

  @Override
  public void onDisable() {
    EntityDeathEvent.getHandlerList().unregister(listener);
    PlayerInteractEvent.getHandlerList().unregister(listener);
    PlayerJoinEvent.getHandlerList().unregister(listener);
  }

  public boolean getUpdateReady() {
    return updateReady;
  }

  public String getUpdateName() {
    return updateName;
  }

  public long getUpdateSize() {
    return updateSize;
  }

  public void update() {
    new Updater(this, updateSlug, getFile(), Updater.UpdateType.NO_VERSION_CHECK, true);
    updateReady = false;
  }
 
  public static boolean addHead(Player player, String skullOwner) {
    PlayerInventory inv = player.getInventory();
    int firstEmpty = inv.firstEmpty();
    if (firstEmpty == -1) {
      return false;
    } else {
      inv.setItem(firstEmpty, new Skull(skullOwner).getItemStack());
      return true;
    }
  }
 
  public static String implode(Set<String> input, String glue) {
    int i = 0;
    StringBuilder output = new StringBuilder();
    for (String key : input) {
      if (i++ != 0) output.append(glue);
      output.append(key);
    }
    return output.toString();
  }
 
  public static String fixcase(String inputName) {
    String inputNameLC = inputName.toLowerCase();
    Player player = Bukkit.getServer().getPlayerExact(inputNameLC);

    if (player != null) {
      return player.getName();
    }
   
    for (OfflinePlayer offPlayer : Bukkit.getServer().getOfflinePlayers()) {
      if (offPlayer.getName().toLowerCase().equals(inputNameLC)) {
        return offPlayer.getName();
      }
    }
   
    return inputName;
  }
}
TOP

Related Classes of org.shininet.bukkit.playerheads.PlayerHeads

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.