@Override public void onInteractEntity(PlayerInteractEntityEvent event, PlayerDetails details) { Player player = event.getPlayer(); Entity entity = event.getRightClicked(); if (EntityNBT.isValidType(entity.getType())) { EntityNBT entityNBT = EntityNBT.fromEntity(entity); player.sendMessage( ChatColor.YELLOW + "Information about " + EntityTypeMap.getName(entity.getType()) + ""); for (NBTVariableContainer vc : entityNBT.getAllVariables()) { player.sendMessage("" + ChatColor.LIGHT_PURPLE + ChatColor.ITALIC + vc.getName() + ":"); for (NBTVariable var : vc) { String value = var.getValue(); player.sendMessage( " " + ChatColor.AQUA + var.getName() + ": " + ChatColor.WHITE + (value != null ? value : ChatColor.ITALIC + "none")); } } player.sendMessage(ChatColor.YELLOW + "Extra information:"); boolean extra = false; if (entityNBT instanceof MobNBT) { float[] chances = ((MobNBT) entityNBT).getDropChances(); String[] names = {"head", "chest", "legs", "feet", "hand"}; player.sendMessage("" + ChatColor.LIGHT_PURPLE + ChatColor.ITALIC + "Drop chance:"); for (int i = 0; i < 5; ++i) { player.sendMessage( " " + ChatColor.AQUA + names[i] + ": " + ChatColor.WHITE + chances[4 - i]); } extra = true; } if (entityNBT instanceof VillagerNBT) { VillagerNBT villagerNBT = (VillagerNBT) entityNBT; player.sendMessage("" + ChatColor.LIGHT_PURPLE + ChatColor.ITALIC + "Trades done:"); int i = 1; for (VillagerNBTOffer offer : villagerNBT.getOffers()) { player.sendMessage( " " + ChatColor.AQUA + "trade " + i + ": " + ChatColor.WHITE + offer.getUses()); ++i; } extra = true; } if (!extra) { player.sendMessage("none"); } event.setCancelled(true); } else { player.sendMessage(ChatColor.RED + "Not a valid entity!"); } }