Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Статус
Закрыто для дальнейших ответов.

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
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх