Как я могу исправить эту ошибку в программировании Bukkit / плагина: java: не могу найти конструктор символов CommandExecute () - PullRequest
0 голосов
/ 13 апреля 2020

Я недавно начал создавать небольшой плагин для моего сервера Minecraft Bukkit / Spigot (Minecraft Версия 1.15.2) для отправки игроку сообщения с его координатами после смерти. Все работало нормально, пока я не попытался реализовать команду для включения и отключения этой функции. Для этого я создал новый класс java, но когда я попытался скомпилировать, я получил эту ошибку:

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 (Основной класс)

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;
    }
}

1 Ответ

0 голосов
/ 19 апреля 2020

Я понял это. Для класса CommadExecute не существует конструктора, поэтому он не может быть расширен (насколько я знаю). Поскольку в использовании CommandExecute нет необходимости, вы можете его пропустить.

...