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

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

Статус
Закрыто для дальнейших ответов.
Баллы
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
 
Ошибка на 27 строке. Убедись, что команда uncuff указана в plugin.yml
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх