@EventHandler
    public void anvilName(InventoryClickEvent event) {
        Player player = (Player) event.getWhoClicked();

        Inventory inventory = event.getInventory();
        // Checks if we are working with an anvil
        if (!(inventory instanceof AnvilInventory))
            return;

        InventoryView inventoryView = event.getView();
        int rawSlot = event.getRawSlot();
        // Checks if the raw slot is the same as the inventory view
        if (rawSlot != inventoryView.convertSlot(rawSlot))
            return;

        /*
            Checks if the raw slot is 2

            Slot 0 = Left Item
            Slot 1 = Right Item
            Slot 2 = Final Item
         */
        if (rawSlot != 2)
            return;

        // Gets the result item
        ItemStack item = event.getCurrentItem();

        // Checks if the item is null
        if (item == null || item.getType() == Material.AIR)
            return;

        ItemMeta itemMeta = item.getItemMeta();
        String itemName = itemMeta.getDisplayName();

        // Checks if the item's name is null
        if (itemName == null)
            return;

        // Lower case the item's name
        itemName = itemName.toLowerCase();

        // Checks if the item's name starts with "vehicle upgrade:"
        if (!itemName.startsWith("vehicle upgrade:"))
            return;

        // Removes the chest prefix
        String upgradeName = itemName.replace("vehicle upgrade:", "");
        // Removes unnecessary spaces
        upgradeName = upgradeName.trim();

        // Checks if the upgrade exists
        if (!UpgradeManager.doesUpgradeExist(upgradeName)) {
            // Send an error message to the player
            player.sendMessage("§cThat upgrade doesn't exist! Do §4/vupgrades §cto see what upgrades are available!");
            // Play a sound to the player
            player.playSound(player.getLocation(), Sound.DONKEY_ANGRY, 1F, 1F);
            // Cancel the event
            event.setCancelled(true);
        }
    }