Minecraft Plugin - NullPointerException
Я учусь писать плагины для Bukkit/Spigot. В Java новичок. В какой то момент я получил NullPointerException. Ошибка указывает на строку 13 класса Main. Вот строка 13:
getCommand(cmds.playerinfocmd).setExecutor(cmds);
Весь код класса Main:
package com.testplugin;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
Commands cmds = new Commands(this);
public void onEnable() {
Bukkit.getPluginManager().registerEvents(new Handler(), this);
getCommand(cmds.playerinfocmd).setExecutor(cmds);
getLogger().info("Test plugin enabled!");
}
public void onDisable() {
getLogger().info("Test plugin disabled!");
}
}
Код класса commands:
package com.testplugin;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.md_5.bungee.api.ChatColor;
public class Commands implements CommandExecutor{
Main plugin;
String playerinfocmd = "plinfo";
public Commands(Main plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(cmd.toString() != playerinfocmd) return true;
Boolean hasperm = NoPermission("test.plinfo", sender);
if(!hasperm) {
sender.sendMessage(ChatColor.RED + "You don`t have permission");
return true;
}
if(args.length != 1) {
return false;
}
String playername = args[0];
Player player = Bukkit.getPlayer(playername);
if(player == null) {
sender.sendMessage(ChatColor.RED + playername + " is not defined");
return true;
}
sender.sendMessage("IP: " + player.getAddress().getAddress());
return true;
}
public Boolean NoPermission(String permission, CommandSender p) {
if(!p.hasPermission(permission)) {
return true;
} else {
return false;
}
}
}
Код класса Handler:
package com.testplugin;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class Handler implements Listener{
@EventHandler
public void Join(PlayerJoinEvent e) {
Player player = e.getPlayer();
player.sendMessage("Привет, " + player.getName());
}
}
plugin.yml:
name: Test
main: com.testplugin.Main
version: 1.0
commands:
plinfo:
description: Show player info
usage: /info <Player>
Ответы (1 шт):
Автор решения: Илья
→ Ссылка
Всё, я нашёл ошибку. В файле plugin.yml отредактировал отступы Вот правильный вариант
name: Test
main: com.testplugin.Main
version: 1.0
commands:
plinfo:
description: Shows player info
usage: /plinfo <Player>
(Поставил пробел перед plinfo)