package org.arkham.cs.cosmetics;
import java.util.ArrayList;
import java.util.List;
import org.arkham.cs.CosmeticSuite;
import org.arkham.cs.handler.PlayerHandler;
import org.arkham.cs.utils.Rank;
import org.bukkit.ChatColor;
import org.bukkit.Color;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.LeatherArmorMeta;
/**
* Hero - Rename / Color of armor and blocks SuperHero Rename / Color weapons,
* armor, blocks, tools /lore /itemcolor
*
* atauthor calebbfmv Aug 13, 2014
*
*/
public class ItemColoring {
private static ArrayList<Material> heroItems = new ArrayList<>();
private static ArrayList<Material> superHeroItems = new ArrayList<>();
static {
for (Material mat : Material.values()) {
if (mat.name().toLowerCase().contains("_helmet") || mat.name().toLowerCase().contains("_chestplate") || mat.name().toLowerCase().contains("_leggings")
|| mat.name().toLowerCase().contains("_boots")) {
heroItems.add(mat);
}
String name = mat.name().toLowerCase();
if (name.contains("_pickaxe") || name.contains("_axe") || name.contains("_spade") || name.contains("_hoe") || name.contains("_sword")) {
superHeroItems.add(mat);
continue;
}
heroItems.add(mat);
}
superHeroItems.addAll(heroItems);
}
public static void rename(Player player, String name) {
if (name == null || name.equalsIgnoreCase("")) {
return;
}
ItemStack item = player.getItemInHand();
if (PlayerHandler.isNothingSpecial(player)) {
CosmeticSuite cs = CosmeticSuite.getInstance();
FileConfiguration config = cs.getConfig();
String link = config.getString("buy-link", CosmeticSuite.PREFIX + "Purchase this rank at " + ChatColor.UNDERLINE + "buy.arkhamnetwork.org");
link = ChatColor.translateAlternateColorCodes('&', link);
player.sendMessage(link);
return;
}
if (item == null || item.getType() == Material.AIR) {
player.sendMessage(CosmeticSuite.PREFIX + "Pleas have the item, that you wish to change, in your hand.");
return;
}
if (name.length() > 64) {
player.sendMessage(CosmeticSuite.PREFIX + "The given name was longer than the max allowed (Your Length: " + name.length() + " Max Allowed: 64");
return;
}
Rank rank = PlayerHandler.getRank(player);
if (rank == Rank.HERO) {
if (!heroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
if (rank == Rank.SUPERHERO) {
if (!superHeroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
ItemMeta meta = item.getItemMeta();
StringBuilder builder = new StringBuilder();
builder.append(ChatColor.translateAlternateColorCodes('&', name));
meta.setDisplayName(builder.toString());
item.setItemMeta(meta);
player.setItemInHand(item);
player.sendMessage(CosmeticSuite.PREFIX + "Changed items name to " + builder.toString());
}
public static void lore(Player player, String loreLine) {
nameAndLore(player, null, loreLine);
}
public static void nameAndLore(Player player, String name, String loreLine) {
rename(player, name);
ItemStack item = player.getItemInHand();
ItemMeta meta = item.getItemMeta();
List<String> lore = new ArrayList<>();
if (PlayerHandler.isNothingSpecial(player)) {
CosmeticSuite cs = CosmeticSuite.getInstance();
FileConfiguration config = cs.getConfig();
String link = config.getString("buy-link", CosmeticSuite.PREFIX + "Purchase this rank at " + ChatColor.UNDERLINE + "buy.arkhamnetwork.org");
link = ChatColor.translateAlternateColorCodes('&', link);
player.sendMessage(link);
return;
}
if (item == null || item.getType() == Material.AIR) {
player.sendMessage(CosmeticSuite.PREFIX + "Pleas have the item, that you wish to change, in your hand.");
return;
}
if (loreLine.length() > 48) {
player.sendMessage(CosmeticSuite.PREFIX + "The given lore was longer than the max allowed (Your Length: " + name.length() + " Max Allowed: 48");
return;
}
Rank rank = PlayerHandler.getRank(player);
if (rank == Rank.HERO) {
if (!heroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
if (rank == Rank.SUPERHERO) {
if (!superHeroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
String color = (loreLine.contains("&") ? ChatColor.translateAlternateColorCodes('&', loreLine) : ChatColor.WHITE.toString() + loreLine);
loreLine = ChatColor.AQUA + player.getName() + " : " + color;
lore.add(loreLine);
meta.setLore(lore);
item.setItemMeta(meta);
player.setItemInHand(item);
player.sendMessage(CosmeticSuite.PREFIX + "Set the items lore to " + loreLine);
}
public static void color(Player player, DyeColor dyeColor){
Color color = dyeColor.getColor();
ItemStack item = player.getItemInHand();
if (PlayerHandler.isNothingSpecial(player)) {
CosmeticSuite cs = CosmeticSuite.getInstance();
FileConfiguration config = cs.getConfig();
String link = config.getString("buy-link", CosmeticSuite.PREFIX + "Purchase this rank at " + ChatColor.UNDERLINE + "buy.arkhamnetwork.org");
link = ChatColor.translateAlternateColorCodes('&', link);
player.sendMessage(link);
return;
}
if (item == null || item.getType() == Material.AIR) {
player.sendMessage(CosmeticSuite.PREFIX + "Pleas have the item, that you wish to change, in your hand.");
return;
}
Rank rank = PlayerHandler.getRank(player);
if (rank == Rank.HERO) {
if (!heroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
if (rank == Rank.SUPERHERO) {
if (!superHeroItems.contains(item.getType())) {
player.sendMessage(CosmeticSuite.PREFIX + "You cannot edit this item!");
return;
}
}
ItemMeta meta = item.getItemMeta();
try {
LeatherArmorMeta lmeta = (LeatherArmorMeta) meta;
lmeta.setColor(color);
item.setItemMeta(lmeta);
player.setItemInHand(item);
player.sendMessage(CosmeticSuite.PREFIX + "Changed the items color to " + ChatColor.UNDERLINE + dyeColor.name());
} catch (ClassCastException e){
player.sendMessage(CosmeticSuite.PREFIX + "Make sure the item in your hand is leather armor!");
}
}
}