Package com.github.zathrus_writer.commandsex.helpers

Source Code of com.github.zathrus_writer.commandsex.helpers.Nametags

package com.github.zathrus_writer.commandsex.helpers;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;

import com.github.zathrus_writer.commandsex.CommandsEX;
import com.github.zathrus_writer.commandsex.SQLManager;
import com.github.zathrus_writer.commandsex.handlers.Handler_nametags;

public class Nametags implements Listener {

  /***
   * Common methods used with nametags
   * Most code from the Nicknames class
   * @author iKeirNez
   */

  // stores all nametags
  public static HashMap<String, String> nametags = new HashMap<String, String>();
  public static boolean tagAPIPresent = false;

  public Nametags(){
    if (tagAPIPresent){
      // register events
      CommandsEX.plugin.getServer().getPluginManager().registerEvents(new Handler_nametags(), CommandsEX.plugin);
    }
    // we can't restore nametags if the database is disabled
    if (!CommandsEX.sqlEnabled){
      return;
    }

    // create the tables and columns if they do not exist
    SQLManager.query((SQLManager.sqlType.equals("mysql") ? "" : "BEGIN; ") + "CREATE TABLE IF NOT EXISTS " + SQLManager.prefix + "nametags (player_name varchar(32) NOT NULL, nametag varchar(32) NOT NULL)" + (SQLManager.sqlType.equals("mysql") ? " ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='stores players nametags'" : "; COMMIT;"));

    // load database into HashMap
    try {
      ResultSet res = SQLManager.query_res("SELECT player_name, nametag FROM " + SQLManager.prefix + "nametags");
      while (res.next()){
        nametags.put(res.getString("player_name"), res.getString("nametag"));
      }

      res.close();
    } catch (SQLException ex){
      if (CommandsEX.getConf().getBoolean("debugMode")){
        ex.printStackTrace();
      }
    }
   
    // add shutdown function
    CommandsEX.onDisableFunctions.add("com.github.zathrus_writer.commandsex.helpers.Nametags#####onDisable");
  }

  public static void init(CommandsEX plugin){
    Plugin pl = Bukkit.getPluginManager().getPlugin("TagAPI");
    if (pl != null && pl.isEnabled()){
      tagAPIPresent = true;
    }
   
    new Nametags();
  }
 
  /**
   * Saves nametags to database when the server is shutdown
   */
 
  public static void onDisable(CommandsEX p){
    saveTags();
  }
 
  /***
   * Set a players nametag
   * @param pName
   * @param nametag
   */
 
  public static void setTag(String pName, String nametag){
    if (nametags.containsKey(pName)){
      nametags.remove(pName);
    }
   
    nametags.put(pName, nametag);
    Player player = Bukkit.getPlayerExact(pName);
    if (player != null){
      org.kitteh.tag.TagAPI.refreshPlayer(player);
    }
  }
 
  /**
   * Refresh's a players nametag
   * @param player The players nametag to be refreshed
   */
 
  public static void refreshTag(Player player){
    org.kitteh.tag.TagAPI.refreshPlayer(player);
  }
 
  /***
   * Function to reset a players nametag
   * @param player
   */
 
  public static void resetTag(Player player){
    String pName = player.getName();
    resetTag(pName);
  }
 
  /***
   * Function to reset a players nametag
   * @param pName
   */
 
  public static void resetTag(String pName){
    if (nametags.containsKey(pName)){
      nametags.remove(pName);
    }
   
    Player player = Bukkit.getPlayerExact(pName);
    if (player != null){
      org.kitteh.tag.TagAPI.refreshPlayer(player);
    }
  }
 
  /***
   * Function to get a players nametag
   * @param player
   * @return
   */
 
  public static String getTag(Player player){
    return getTag(player.getName());
  }
 
  /***
   * Function to get a players nickname
   * @param pName
   * @return
   */
 
  public static String getTag(String pName){
    String nametag = pName;
    if (nametags.containsKey(pName)){
      nametag = nametags.get(pName) + ChatColor.RESET;
    }
   
    return nametag;
  }
   
  /***
   * Function to save all players nametags from the HashMap to the database
   */
 
  public static void saveTags(){
    // we can't save the nametags if the database is disabled
    if (CommandsEX.sqlEnabled){
      // delete rows from the database if the key is not in the HashMap, used for when a nametag is reset
      // and the row is no longer in the table
      try {
        ResultSet rs = SQLManager.query_res("SELECT player_name FROM " + SQLManager.prefix + "nametags");
        while (rs.next()){
          String rsName = rs.getString("player_name");
          if (!nametags.containsKey(rsName)){
            SQLManager.query("DELETE FROM " + SQLManager.prefix + "nametags WHERE player_name = ?", rsName);
          }
        }
      } catch (SQLException ex){
        if (CommandsEX.getConf().getBoolean("debugMode")){
          ex.printStackTrace();
        }
      }
     
      for (String pName : nametags.keySet()){
        String nametag = nametags.get(pName);
       
        // insert or replace nickname into the database
        try {
          ResultSet res = SQLManager.query_res("SELECT player_name, nametag FROM " + SQLManager.prefix + "nametags WHERE player_name = ?", pName);
          // if a nickname is already in the database, overwrite it otherwise create it
          if (!res.next()){
            SQLManager.query("INSERT " + (SQLManager.sqlType.equals("mysql") ? "" : "OR REPLACE ") + "INTO " + SQLManager.prefix + "nametags (player_name, nametag) SELECT ? AS player_name, ? AS nametag", pName, nametag);
          } else {
            SQLManager.query("UPDATE " + SQLManager.prefix + "nametags SET player_name = ?, nametag = ? WHERE player_name = ?", pName, nametag, pName);
          }
          res.close();
        } catch (SQLException e) {
        }
      }
    }
  }
}
TOP

Related Classes of com.github.zathrus_writer.commandsex.helpers.Nametags

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.