我如何在 bukkit/plugin 编程中修复此错误:java:cannot 查找符号构造函数 CommandExecute()
How do i fix this error in bukkit/plugin programming: java:cannot find symbol constructor CommandExecute()
我最近开始为我的 Minecraft bukkit/spigot 服务器(Minecraft 版本 1.15.2)创建一个小插件,用于在玩家死亡时向玩家发送一条消息,其中包含他的坐标。一切正常,直到我尝试执行启用和禁用此功能的命令。
为此,我创建了一个新的 java class,但是当我尝试编译时,出现了这个错误:
Error:(9, 8) java: cannot find symbol
symbol: constructor CommandExecute()
location: class net.minecraft.server.v1_15_R1.CommandExecute
因为我是 java 的新手,所以我真的想不出什么办法来解决这个问题,因此希望得到您的帮助!
完整代码见下图(JDK 1.8):
DeathMessage.java(主要class)
package com.minecraft.deathmessage;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
public class DeathMessage extends JavaPlugin {
private CommandsClass commands = new CommandsClass();
private final Server server = getServer();
public Boolean enabled = false;
public void onEnable() {
// Initialisation Message
server.getConsoleSender().sendMessage(
"[DM] " + ChatColor.GREEN + "DeathMessage plugin has been enabled");
// Event registering
server.getPluginManager().registerEvents(new EventsClass(), this);
// Command registering
Objects.requireNonNull(getCommand(commands.cmd_header)).setExecutor(commands);
}
public void onDisable() {
server.getConsoleSender().sendMessage(
"[DM] " + ChatColor.GREEN + "DeathMessage plugin has been disabled");
}
}
EventsClass.java
package com.minecraft.deathmessage;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
public class EventsClass implements Listener {
@EventHandler
public void onDeath(PlayerDeathEvent event) {
if (true) { // this is just a placeholder for later checking if the feature is enabled or not
Entity entity = event.getEntity();
String entity_type = entity.getType().toString();
if (entity_type.equals("PLAYER")) {
Location player_location = entity.getLocation();
int x_pos = (int) player_location.getX();
int y_pos = (int) player_location.getY();
int z_pos = (int) player_location.getZ();
World world = player_location.getWorld();
String world_string = ChatColor.GREEN + "overworld";
if (world != null) {
if (world.getName().equals("world_nether")) {
world_string = ChatColor.RED + "nether";
} else if (world.getName().equals("world_the_end")) {
world_string = ChatColor.BLUE + "end";
}
}
entity.sendMessage("[DC] " + ChatColor.GOLD + "You died at " + ChatColor.WHITE + Integer.toString(x_pos) +
" " + Integer.toString(y_pos) + " " + Integer.toString(z_pos) + ChatColor.GOLD + " in the " + ChatColor.WHITE +
world_string + ChatColor.GOLD + "!");
}
}
}
}
CommandsClass.java
package com.minecraft.deathmessage;
import net.minecraft.server.v1_15_R1.CommandExecute;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;
public class CommandsClass extends CommandExecute implements Listener, CommandExecutor {
public String cmd_header = "dm";
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
return false;
}
}
我明白了。 CommadExecute
class 不存在构造函数,因此无法对其进行扩展(据我所知)。由于没有必要使用 CommandExecute
你可以省略它。
我最近开始为我的 Minecraft bukkit/spigot 服务器(Minecraft 版本 1.15.2)创建一个小插件,用于在玩家死亡时向玩家发送一条消息,其中包含他的坐标。一切正常,直到我尝试执行启用和禁用此功能的命令。 为此,我创建了一个新的 java class,但是当我尝试编译时,出现了这个错误:
Error:(9, 8) java: cannot find symbol
symbol: constructor CommandExecute()
location: class net.minecraft.server.v1_15_R1.CommandExecute
因为我是 java 的新手,所以我真的想不出什么办法来解决这个问题,因此希望得到您的帮助! 完整代码见下图(JDK 1.8):
DeathMessage.java(主要class)
package com.minecraft.deathmessage;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.Objects;
public class DeathMessage extends JavaPlugin {
private CommandsClass commands = new CommandsClass();
private final Server server = getServer();
public Boolean enabled = false;
public void onEnable() {
// Initialisation Message
server.getConsoleSender().sendMessage(
"[DM] " + ChatColor.GREEN + "DeathMessage plugin has been enabled");
// Event registering
server.getPluginManager().registerEvents(new EventsClass(), this);
// Command registering
Objects.requireNonNull(getCommand(commands.cmd_header)).setExecutor(commands);
}
public void onDisable() {
server.getConsoleSender().sendMessage(
"[DM] " + ChatColor.GREEN + "DeathMessage plugin has been disabled");
}
}
EventsClass.java
package com.minecraft.deathmessage;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
public class EventsClass implements Listener {
@EventHandler
public void onDeath(PlayerDeathEvent event) {
if (true) { // this is just a placeholder for later checking if the feature is enabled or not
Entity entity = event.getEntity();
String entity_type = entity.getType().toString();
if (entity_type.equals("PLAYER")) {
Location player_location = entity.getLocation();
int x_pos = (int) player_location.getX();
int y_pos = (int) player_location.getY();
int z_pos = (int) player_location.getZ();
World world = player_location.getWorld();
String world_string = ChatColor.GREEN + "overworld";
if (world != null) {
if (world.getName().equals("world_nether")) {
world_string = ChatColor.RED + "nether";
} else if (world.getName().equals("world_the_end")) {
world_string = ChatColor.BLUE + "end";
}
}
entity.sendMessage("[DC] " + ChatColor.GOLD + "You died at " + ChatColor.WHITE + Integer.toString(x_pos) +
" " + Integer.toString(y_pos) + " " + Integer.toString(z_pos) + ChatColor.GOLD + " in the " + ChatColor.WHITE +
world_string + ChatColor.GOLD + "!");
}
}
}
}
CommandsClass.java
package com.minecraft.deathmessage;
import net.minecraft.server.v1_15_R1.CommandExecute;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.event.Listener;
public class CommandsClass extends CommandExecute implements Listener, CommandExecutor {
public String cmd_header = "dm";
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
return false;
}
}
我明白了。 CommadExecute
class 不存在构造函数,因此无法对其进行扩展(据我所知)。由于没有必要使用 CommandExecute
你可以省略它。