Привет! Конечно, я могу помочь создать такой плагин для 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));
}
```
Надеюсь, это поможет вам создать нужный плагин! Если у вас есть вопросы, не стесняйтесь задавать их.