Привет! Конечно, я могу помочь создать такой плагин для Spigot 1.12.2.
Для начала, нужно создать команду /fisher, которая будет открывать GUI. Для этого можем использовать Bukkit API и Inventory GUI. Вот пример кода команды:
```
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("fisher")) {
        // Создание инвентаря
        Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST, "Fisher GUI");
        
        // Создание блоков предметов для добавления в инвентарь
        ItemStack codItem = new ItemStack(Material.COD);
        ItemMeta codItemMeta = codItem.getItemMeta();
        codItemMeta.setDisplayName(ChatColor.GREEN + "Треска");
        List<String> codLore = new ArrayList<String>();
        codLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Цена: 2000 монет");
        codLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Можно продать");
        codItemMeta.setLore(codLore);
        codItem.setItemMeta(codItemMeta);
        
        ItemStack expBottleItem = new ItemStack(Material.EXP_BOTTLE);
        ItemMeta expBottleItemMeta = expBottleItem.getItemMeta();
        expBottleItemMeta.setDisplayName(ChatColor.GREEN + "Бутылка с опытом");
        List<String> expBottleLore = new ArrayList<String>();
        expBottleLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Цена: 15000 монет и 200 опыта");
        expBottleLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Можно прокачать");
        expBottleLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Прокачка: +800 монет и +5000 монет за улучшение");
        expBottleLore.add(ChatColor.GRAY + "" + ChatColor.ITALIC + "Максимум улучшений: 10");
        expBottleItemMeta.setLore(expBottleLore);
        expBottleItem.setItemMeta(expBottleItemMeta);
        
        // Добавление блоков предметов в инвентарь
        inv.setItem(0, codItem);
        inv.setItem(1, expBottleItem);
        
        // Открытие инвентаря для игрока
        if (sender instanceof Player) {
            Player player = (Player) sender;
            player.openInventory(inv);
        }
        return true;
    }
    return false;
}
```
Затем, нужно добавить функционал для продажи трески и прокачки опытом. Для этого можем использовать события InventoryClickEvent и PlayerExpChangeEvent. Вот пример кода:
```
@EventHandler
public void onInventoryClick(InventoryClickEvent event) {
    if (event.getInventory().getName().equals("Fisher GUI")) {
        event.setCancelled(true);
        if (event.getCurrentItem() != null && event.getCurrentItem().getType() != Material.AIR) {
            Player player = (Player) event.getWhoClicked();
            switch (event.getCurrentItem().getType()) {
                case COD:
                    EconomyResponse resp = econ.withdrawPlayer(player, 2000);
                    if (resp.transactionSuccess()) {
                        player.getInventory().addItem(new ItemStack(Material.COD, 1));
                        player.sendMessage(ChatColor.GREEN + "Вы купили треску за 2000 монет");
                    } else {
                        player.sendMessage(ChatColor.RED + "У вас недостаточно монет");
                    }
                    break;
                case EXP_BOTTLE:
                    if (player.getLevel() < 200 || econ.getBalance(player) < 15000) {
                        player.sendMessage(ChatColor.RED + "У вас недостаточно опыта или монет");
                        break;
                    }
                    int upgrades = getPlayerData(player);
                    if (upgrades >= 10) {
                        player.sendMessage(ChatColor.RED + "Вы уже прокачали опытом до максимума");
                        break;
                    }
                    int cost = 15000 + (800 * upgrades);
                    int xpCost = 200 + (5000 * upgrades);
                    resp = econ.withdrawPlayer(player, cost);
                    if (resp.transactionSuccess()) {
                        player.giveExp(-xpCost);
                        setPlayerData(player, upgrades + 1);
                        player.sendMessage(ChatColor.GREEN + "Вы прокачали опытом за " + cost + " монет и " + xpCost + " опыта");
                    } else {
                        player.sendMessage(ChatColor.RED + "У вас недостаточно монет");
                    }
                    break;
            }
        }
    }
}
@EventHandler
public void onPlayerExpChange(PlayerExpChangeEvent event) {
    Player player = event.getPlayer();
    int upgrades = getPlayerData(player);
    int xpCost = 200 + (5000 * upgrades);
    if (event.getAmount() < 0 && player.getLevel() + event.getAmount() < xpCost) {
        event.setAmount(-(player.getLevel() - xpCost));
        player.sendMessage(ChatColor.RED + "Вы не можете потратить столько опыта на прокачку");
    }
}
// Функции для хранения данных на игроке
public int getPlayerData(Player player) {
    return player.getMetadata("FisherExpUpgrades").get(0).asInt();
}
public void setPlayerData(Player player, int upgrades) {
    player.setMetadata("FisherExpUpgrades", new FixedMetadataValue(plugin, upgrades));
}
```
Надеюсь, это поможет вам создать нужный плагин! Если у вас есть вопросы, не стесняйтесь задавать их.