getting this error:
my onEnable:
my paper-plugin.yml:
my heal class:
Code:
java.lang.NullPointerException: Cannot invoke "org.bukkit.command.PluginCommand.setExecutor(org.bukkit.command.CommandExecutor)" because the return value of "me.mackaroni.testplugin.TestPlugin.getCommand(String)" is null
my onEnable:
Code:
public void onEnable() {
// Plugin startup logic
Bukkit.getConsoleSender().sendMessage("[TEST PLUGIN]This Plugin Works!");
//Bukkit.getPluginManager().registerEvents(new JoinMessage(), this);
this.getCommand("doctor").setExecutor(new Heal());
}
my paper-plugin.yml:
Code:
name: TestPlugin
version: 1.0.1
main: me.mackaroni.testplugin.TestPlugin
api-version: '1.20'
commands:
doctor:
description: "Heals player to full"
usage: "/heal"
my heal class:
Code:
package me.mackaroni.testplugin;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class Heal implements CommandExecutor {
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
// checks command alias == "doctor"
if (label.equalsIgnoreCase("doctor")) {
// check that player is sending command
if (!(sender instanceof Player player)) {
sender.sendMessage(Component.text("[HEAL]Only Players Can Use This Command"));
return true;
}
// check that player has perms for doctor.use
if (!player.hasPermission("doctor.use")) {
player.sendMessage(
Component.text("[HEAL]Cannot Use This Command").color(NamedTextColor.RED)
);
return true;
}
// "/doctor" input
if (args.length == 0) {
TextComponent message = Component.text("[HEAL]Want To Be Healed?")
.color(NamedTextColor.GOLD)
.decoration(TextDecoration.BOLD, true);
message.clickEvent(ClickEvent.runCommand("/doctor healme"));
message.hoverEvent(HoverEvent.showText(
Component.text("Click To Be Healed")
.color(NamedTextColor.GREEN)
.decoration(TextDecoration.ITALIC, true))
);
player.sendMessage(message);
return true;
}
// "/heal" helper call
if (args[0].equalsIgnoreCase("healme")) {
player.setHealth(20.0);
player.sendMessage(Component.text("[HEAL]You've Been Healed")
.color(NamedTextColor.GREEN)
);
return true;
}
// error pickup/redirect
player.sendMessage(Component.text("[HEAL]Usage: /doctor?")
.color(NamedTextColor.RED)
);
return true;
}
return false;
}
}
Last edited: