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

Помогите Ошибка NullPointerException

Тема в разделе "Разработка плагинов для новичков", создана пользователем Арбузный кот, 28 июн 2023.

Статус темы:
Закрыта.
  1. Автор темы
    Арбузный кот

    Арбузный кот Ньюби

    Баллы:
    1
    Добрый день. Я написал свой плагин на bukkit который добавляет в игру команды /cuff и /uncuff, которые сковывают и расковывают игрока в наручники при этом запрещая атаковать и использовать инвентарь. Почему-то при старте плагина выдает ошибку NullPointerException. Что делать?

    Код плагина:

    Код:
    package org.structures.policeplugin;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class PolicePlugin extends JavaPlugin implements Listener, CommandExecutor {
    
        private Map<Player, Boolean> handcuffedPlayers;
    
        @Override
        public void onEnable() {
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            this.handcuffedPlayers = new HashMap<>();
            getCommand("cuff").setExecutor(this);
            getCommand("uncuff").setExecutor(this);
        }
    
        @Override
        public void onDisable() {
            handcuffedPlayers.clear();
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if (label.equalsIgnoreCase("cuff")) {
                if (args.length == 1) {
                    String targetName = args[0];
                    Player target = Bukkit.getPlayer(targetName);
                    if (target != null && target.isOnline()) {
                        handcuffPlayer(target);
                        sender.sendMessage(ChatColor.GREEN + "Player " + target.getName() + " has been handcuffed.");
                        return true;
                    } else {
                        sender.sendMessage(ChatColor.RED + "Invalid player.");
                        return true;
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + "Usage: /cuff <player>");
                    return true;
                }
            } else if (label.equalsIgnoreCase("uncuff")) {
                if (args.length == 1) {
                    String targetName = args[0];
                    Player target = Bukkit.getPlayer(targetName);
                    if (target != null && target.isOnline()) {
                        uncuffPlayer(target);
                        sender.sendMessage(ChatColor.GREEN + "Player " + target.getName() + " has been uncuffed.");
                        return true;
                    } else {
                        sender.sendMessage(ChatColor.RED + "Invalid player.");
                        return true;
                    }
                } else {
                    sender.sendMessage(ChatColor.RED + "Usage: /uncuff <player>");
                    return true;
                }
            }
            return false;
        }
    
        @EventHandler
        public void onEntityDamage(EntityDamageByEntityEvent event) {
            if (event.getDamager() instanceof Player) {
                Player attacker = (Player) event.getDamager();
                if (handcuffedPlayers.containsKey(attacker) && handcuffedPlayers.get(attacker)) {
                    event.setCancelled(true);
                }
            }
        }
    
        private void handcuffPlayer(Player player) {
            handcuffedPlayers.put(player, true);
            player.setGameMode(GameMode.ADVENTURE);
            player.sendMessage(ChatColor.RED + "You have been handcuffed. You cannot attack or interact with the inventory.");
        }
    
        private void uncuffPlayer(Player player) {
            handcuffedPlayers.remove(player);
            player.setGameMode(GameMode.SURVIVAL);
            player.sendMessage(ChatColor.GREEN + "You have been uncuffed. You can now attack and interact with the inventory.");
        }
    }
    Консоль:
    Код:
    [22:12:44 INFO]: [PolicePlugin] Loading PolicePlugin v1.0-SNAPSHOT
    [22:12:44 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [22:12:44 WARN]: **** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!
    [22:12:46 INFO]: [PolicePlugin] Enabling PolicePlugin v1.0-SNAPSHOT
    [22:12:47 ERROR]: Error occurred while enabling PolicePlugin v1.0-SNAPSHOT (Is i
    t up to date?)
    java.lang.NullPointerException: null
            at org.verdantrp.policeplugin.PolicePlugin.onEnable(PolicePlugin.java:27
    ) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[p
    atched_1.16.5.jar:git-Paper-782]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:370) ~[patched_1.16.5.jar:git-Paper-782]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:500) ~[patched_1.16.5.jar:git-Paper-782]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.
    java:518) ~[patched_1.16.5.jar:git-Paper-782]
            at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer
    .java:432) ~[patched_1.16.5.jar:git-Paper-782]
            at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServ
    er.java:594) ~[patched_1.16.5.jar:git-Paper-782]
            at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.ja
    va:298) ~[patched_1.16.5.jar:git-Paper-782]
            at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:
    1069) ~[patched_1.16.5.jar:git-Paper-782]
            at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftSer
    ver.java:291) ~[patched_1.16.5.jar:git-Paper-782]
            at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
    [22:12:47 INFO]: [PolicePlugin] Disabling PolicePlugin v1.0-SNAPSHOT
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ошибка на 27 строке. Убедись, что команда uncuff указана в plugin.yml
     
  3. Автор темы
    Арбузный кот

    Арбузный кот Ньюби

    Баллы:
    1
    Спасибо, ты лучший!
     
Статус темы:
Закрыта.

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