1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Сервер выдаёт ошибку при запуске плагина

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lkji3, 29 окт 2023.

Статус темы:
Закрыта.
  1. Автор темы
    Lkji3

    Lkji3 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Lkji3
    Код:
    plugin.yml
    
    name: asd
    version: '${version}'
    main: org.lkji3.asd.Asd
    api-version: '1.20'
    
    commands:
      many:
        description: balans
        usage: /many [player] [add/remove] [amount]
        permission: poputka1.many
    
    permissions:
      poputka1.many:
        description: /many
        default: op
    
    events:
      - org.bukkit.event.block.BlockBreakEvent
      - org.bukkit.event.entity
    
    prices:
      DIAMOND: 10
      ZOMBIE: 5
    
    Код:
    asd.java
    
    package org.lkji3.asd;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.entity.EntityDeathEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.UUID;
    
    
    public class Asd extends JavaPlugin implements Listener {
    
        private Map<UUID, Integer> playerBalances = new HashMap<>();
    
        @Override
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (command.getName().equalsIgnoreCase("many")) {
                if (args.length == 0) {
                    if (sender instanceof Player) {
                        Player player = (Player) sender;
                        int balance = getPlayerBalance(player.getUniqueId());
                        player.sendMessage("Ваш баланс: " + balance + " монет");
                    } else {
                        sender.sendMessage("Эта команда может быть выполнена только игроком.");
                    }
                    return true;
                } else if (args.length == 3 && args[1].equalsIgnoreCase("add") && sender.isOp()) {
                    Player target = getServer().getPlayer(args[0]);
                    if (target == null) {
                        sender.sendMessage("игрок не найден.");
                        return true;
                    }
                    int amount;
                    try {
                        amount = Integer.parseInt(args[2]);
                    } catch (NumberFormatException e) {
                        sender.sendMessage("Недопустимое значение.");
                        return true;
                    }
                    if (amount < 0) {
                        sender.sendMessage("Количество монет не может быть отрицательным.");
                        return true;
                    }
                    int balance = getPlayerBalance(target.getUniqueId());
                    setPlayerBalance(target.getUniqueId(), balance + amount);
                    sender.sendMessage("Баланс игрока " + target.getName() + " успешно обновлен.");
                    return true;
                } else if (args.length == 3 && args[1].equalsIgnoreCase("remove") && sender.isOp()) {
                    Player target = getServer().getPlayer(args[0]);
                    if (target == null) {
                        sender.sendMessage("игрок не найден.");
                        return true;
                    }
                    int amount;
                    try {
                        amount = Integer.parseInt(args[2]);
                    } catch (NumberFormatException e) {
                        sender.sendMessage("Недопустимое значение.");
                        return true;
                    }
                    if (amount < 0) {
                        sender.sendMessage("Количество монет не может быть отрицательным.");
                        return true;
                    }
                    int balance = getPlayerBalance(target.getUniqueId());
                    if (balance < amount) {
                        sender.sendMessage("У игрока недостаточно монет.");
                        return true;
                    }
                    setPlayerBalance(target.getUniqueId(), balance - amount);
                    sender.sendMessage("Баланс игрока " + target.getName() + " успешно обновлен.");
                    return true;
                }
            }
            return false;
        }
    
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            if (!playerBalances.containsKey(player.getUniqueId())) {
                playerBalances.put(player.getUniqueId(), 0);
            }
        }
    
        @EventHandler
        public void onEntityDeath(EntityDeathEvent event) {
            if (event.getEntity().getKiller() instanceof Player) {
                Player player = event.getEntity().getKiller();
                int amount = 0;
                switch (event.getEntityType()) {
                    case ZOMBIE:
                        amount = 5;
                        break;
                    // добавить в будущем других мобов
                }
                if (amount > 0) {
                    int balance = getPlayerBalance(player.getUniqueId());
                    setPlayerBalance(player.getUniqueId(), balance + amount);
                    player.sendMessage("Вы получили " + amount + " монет за убийство враждебного существа.");
                }
            }
        }
    
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event) {
            Player player = event.getPlayer();
            int amount = 0;
            switch (event.getBlock().getType()) {
                case DIAMOND_ORE:
                    amount = 10;
                    break;
                // другие дуры
            }
            if (amount > 0) {
                int balance = getPlayerBalance(player.getUniqueId());
                setPlayerBalance(player.getUniqueId(), balance + amount);
                player.sendMessage("Вы получили " + amount + " монет за сломанный блок.");
            }
        }
    
        private int getPlayerBalance(UUID playerUUID) {
            return playerBalances.getOrDefault(playerUUID, 0);
        }
    
        private void setPlayerBalance(UUID playerUUID, int balance) {
            playerBalances.put(playerUUID, balance);
        }
    }
    
    Сервер выдаёт такую ошибку когда пытается загрузить плагин на сервер

    ERROR]: Could not load 'plugins/asd.jar' in folder 'plugins'
    org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml
    at org.bukkit.plugin.java.JavaPluginLoader.getPluginDescription(JavaPluginLoader.java:170) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:?]
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:147) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:?]
    at org.bukkit.craftbukkit.v1_20_R1.CraftServer.loadPlugins(CraftServer.java:435) ~[forge-1.20.1-47.1.79-universal.jar%23257!/:997de31d-ddc9a2dad-d2eba2c8-47.2.1]
    at net.minecraft.server.dedicated.DedicatedServer.m_7038_(DedicatedServer.java:211) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
    at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:850) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
    at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:281) ~[server-1.20.1-20230612.114412-srg.jar%23252!/:?]
    at java.lang.Thread.run(Thread.java:833) [?:?]
    Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml
    ... 7 more
     
  2. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    plugin.yml должен находиться в resources
     
  3. Автор темы
    Lkji3

    Lkji3 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Lkji3
    он там и находится

    upload_2023-10-29_18-57-19.png
     

    Вложения:

  4. Dymeth

    Dymeth Активный участник Пользователь

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В таком случае показывай скрипт/параметры сборки
     
  5. Автор темы
    Lkji3

    Lkji3 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Lkji3
    а может быть проблема в артефакте .jar?
    upload_2023-10-29_19-43-18.png
     
  6. Автор темы
    Lkji3

    Lkji3 Ньюби

    Баллы:
    1
    Имя в Minecraft:
    Lkji3
    всё спасибо я сам кое как разобрался
     
Статус темы:
Закрыта.

Поделиться этой страницей