/* * Copyright (C) 2013-2016 Gonçalo Baltazar <me@goncalomb.com> * * This file is part of NBTEditor. * * NBTEditor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NBTEditor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NBTEditor. If not, see <http://www.gnu.org/licenses/>. */ package com.goncalomb.bukkit.nbteditor.commands; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.command.CommandSender; import org.bukkit.enchantments.Enchantment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.EnchantmentStorageMeta; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; import com.goncalomb.bukkit.mylib.namemaps.EnchantmentsMap; import com.goncalomb.bukkit.mylib.namemaps.PotionEffectsMap; import com.goncalomb.bukkit.mylib.reflect.BukkitReflect; import com.goncalomb.bukkit.nbteditor.nbt.attributes.ItemModifier; public class ItemUtils { public static void sendItemStackInformation(ItemStack stack, CommandSender sender) { ItemMeta meta = stack.getItemMeta(); sender.sendMessage("§eItem information:"); sender.sendMessage(" §2Type: §a" + BukkitReflect.getMaterialName(stack.getType())); sender.sendMessage(" §2Data: §a" + stack.getDurability()); sender.sendMessage(" §2Amount: §a" + stack.getAmount()); String name = meta.getDisplayName(); if (name != null) { sender.sendMessage(" §2Name: §r" + name); } List<String> lore = meta.getLore(); if (lore != null && lore.size() > 0) { sender.sendMessage("§eLore:"); for (String line : lore) { sender.sendMessage(" " + line); } } if (meta instanceof BookMeta && stack.getType() == Material.WRITTEN_BOOK) { sender.sendMessage("§eBook information:"); sender.sendMessage(" §2Title: §r" + ((BookMeta) meta).getTitle()); sender.sendMessage(" §2Autor: §r" + ((BookMeta) meta).getAuthor()); sender.sendMessage(" §2Page #: §r" + ((BookMeta) meta).getPageCount()); } else if (meta instanceof PotionMeta) { Collection<PotionEffect> effects = ((PotionMeta) meta).getCustomEffects(); sender.sendMessage("§ePotion effects:"); for (PotionEffect effect : effects) { sender.sendMessage(" §a" + PotionEffectsMap.getName(effect.getType()) + " " + (effect.getAmplifier() + 1) + " (" + (effect.getDuration()/20f) + "s)"); } } else if (meta instanceof EnchantmentStorageMeta) { Map<Enchantment, Integer> enchants = ((EnchantmentStorageMeta) meta).getStoredEnchants(); if (enchants.size() > 0) { sender.sendMessage("§eStored Enchantments:"); for (Entry<Enchantment, Integer> entry : enchants.entrySet()) { sender.sendMessage(" §a" + EnchantmentsMap.getName(entry.getKey()) + " " + entry.getValue()); } } } else if (meta instanceof LeatherArmorMeta) { sender.sendMessage("§eLeather armor color:"); Color color = ((LeatherArmorMeta) meta).getColor(); sender.sendMessage(" §a" + String.format("#%02X%02X%02X", color.getRed(), color.getGreen(), color.getBlue())); } Map<Enchantment, Integer> enchants = meta.getEnchants(); if (enchants.size() > 0) { sender.sendMessage("§eEnchantments:"); for (Entry<Enchantment, Integer> entry : enchants.entrySet()) { sender.sendMessage(" §a" + EnchantmentsMap.getName(entry.getKey()) + " " + entry.getValue()); } } List<ItemModifier> modifiers = ItemModifier.getItemStackModifiers(stack); if (modifiers.size() > 0) { sender.sendMessage("§eModifiers:"); for (ItemModifier modifier : modifiers) { sender.sendMessage(" §a" + modifier.getName()); sender.sendMessage(" §2Attribute: §a" + modifier.getAttributeType() + " §2Operation: §a" + modifier.getOperation()); sender.sendMessage(" §2Amount: §a" + modifier.getAmount()); } } } private ItemUtils() { } }