SHARE
TWEET

Untitled

RUSHyotuber May 19th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package rush.fgeradores.commands;
  2.  
  3. import java.util.Map;
  4. import java.util.Map.Entry;
  5.  
  6. import org.bukkit.Material;
  7. import org.bukkit.command.Command;
  8. import org.bukkit.command.CommandExecutor;
  9. import org.bukkit.command.CommandSender;
  10. import org.bukkit.entity.EntityType;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.inventory.ItemStack;
  13. import org.bukkit.inventory.meta.ItemMeta;
  14.  
  15. import rush.fgeradores.apis.ItemAPI;
  16.  
  17. public class CommandTeste_Gerador implements CommandExecutor {
  18.    
  19.     public static boolean debug = true;
  20.    
  21.     @Override
  22.     public boolean onCommand(CommandSender s, Command cmd, String lbl, String[] args) {
  23.        
  24.         // Verificando se o sender é um player
  25.         if (!(s instanceof Player)) {
  26.             s.sendMessage("§cO console nao pode executar este comando!");
  27.             return true;
  28.         }
  29.        
  30.         // Pegando o player e o item na sua mão
  31.         Player p = (Player) s;
  32.         ItemStack hand = p.getItemInHand();
  33.        
  34.         // Verificando se o item é valido
  35.         if (hand == null || hand.getType() != Material.MOB_SPAWNER) {
  36.             s.sendMessage("§cPor favor, segure um Mob Spawner na mão.");
  37.             return true;
  38.         }
  39.        
  40.         // Pegando o item meta
  41.         ItemMeta meta = hand.getItemMeta();
  42.        
  43.         // Validando o item meta
  44.         if (meta == null) {
  45.             s.sendMessage("§cNão foi possível localizar os metadadados do Mob Spawner!");
  46.             return true;
  47.         }
  48.        
  49.         // Verificando se o item possui nome ou lore
  50.         if (meta == null || (!meta.hasDisplayName() && !meta.hasLore())) {
  51.             s.sendMessage("§cEste Mob Spawner não possui Nome nem Lore. Como os players irão saber de que tipo ele é?");
  52.             return true;
  53.         }
  54.  
  55.         // Pegando as NBTTags do item
  56.         Map<String, Object> map = ItemAPI.getNBTTags(hand);
  57.        
  58.         // Verificando se ele possui alguma NBTTag
  59.         if (map == null) {
  60.             s.sendMessage("§cNão foi possivel encontrar o mapa das NBTTag desse Mob Spawner.");
  61.             return true;
  62.         }
  63.        
  64.         // Removendo as NBTTag genéricas só pra garantir
  65.         map.remove("effects");
  66.         map.remove("enchantments");
  67.         map.remove("ench");
  68.         map.remove("RepairCost");
  69.         map.remove("AttributeModifiers");
  70.         map.remove("Unbreakable");
  71.         map.remove("HideFlags");
  72.         map.remove("display");
  73.            
  74.         // Percorendo todas as tags
  75.         for (Entry<String, Object> entry : map.entrySet()) {
  76.             try {
  77.                 // Testando se é possível pegar o spawner apartir da NBTTag.
  78.                 if (debug) System.out.println(entry);
  79.                 String key = entry.getKey();
  80.                 String value = entry.getValue().toString().toUpperCase().replace("\"", "").replace("'", "");
  81.                 EntityType.valueOf(value.toUpperCase());
  82.                 s.sendMessage("§aNBTTag do tipo do Mob Spawner encontrada com sucesso! Tag: §7" + key);
  83.                 return true;
  84.             } catch (Throwable e) {}
  85.         }
  86.        
  87.         // Erro
  88.         s.sendMessage("§cNão foi possivel localizar a NBTTag com o tipo do Mob Spawner.");
  89.         return true;
  90.     }
  91.  
  92. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top