java - 从服务器弃用了 getPlayer()

标签 java eclipse bukkit

下面的代码给出一个错误,指出它已被弃用。

Player target = Bukkit.getServer().getPlayer(args[0]);

这是我的插件:

package me.herobrine112211.ulticmdpack;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class System extends JavaPlugin {

    public void onEnable() {
        Bukkit.getServer().getLogger().info("Ultimate Command Pack Plugin has been actived!");
    }

    public void onDisable() {
        Bukkit.getServer().getLogger().info("Ultimate Command Pack Plugin has been disabled! This will give big problems to server.");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {

        if (!(sender instanceof Player)) {
            sender.sendMessage(ChatColor.RED + "Console will never need owner support.");
            return true;
        }

        Player player = (Player) sender;
        Player target = Bukkit.getServer().getPlayer(args[0]);

        if (cmd.getName().equalsIgnoreCase("contactowner")) {
            player.sendMessage(ChatColor.GOLD + "Owner: Herobrine112211. Live chat skype: gangsteris33.");
        }

        if (cmd.getName().equalsIgnoreCase("heal")) {
            if (args.length == 0) {
                player.setHealth(20f);
                player.sendMessage(ChatColor.GREEN + "Your health is now full!");
                return true;
            }
            if (target == null) {
                player.sendMessage(ChatColor.RED + "Player must be online to be healed!");
                return true;
            }
            target.setHealth(20f);
            target.sendMessage(ChatColor.GREEN + player.getName() + " healed you!");
            player.sendMessage(ChatColor.GREEN + target.getName() + " is healed!");
        }

        if (cmd.getName().equalsIgnoreCase("feed")) {
            if (args.length == 0) {
                player.setFoodLevel(20);
                player.sendMessage(ChatColor.GREEN + "Your hunger is now full!");
                return true;
            }
            if (target == null) {
                player.sendMessage(ChatColor.RED + "Player must be online to be feeded!");
                return true;
            }
            target.setFoodLevel(20);
            target.sendMessage(ChatColor.GREEN + player.getName() + " fed you!");
            player.sendMessage(ChatColor.GREEN + target.getName() + " hunger is now full!");
        }
        return true;
    }
}

我得到这个堆栈跟踪:

5:02:27 AM [ERROR] null
5:02:27 AM org.bukkit.command.CommandException: Unhandled exception executing command 'heal' in plugin UltimateCommandPack v1.0.0
5:02:27 AM at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) ~[bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at org.bukkit.craftbukkit.v1_8_R2.CraftServer.dispatchCommand(CraftServer.java:625) ~[bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.PlayerConnection.handleCommand(PlayerConnection.java:1077) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.PlayerConnection.a(PlayerConnection.java:937) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(SourceFile:37) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.PacketPlayInChat.a(SourceFile:9) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.PlayerConnectionUtils$1.run(SourceFile:13) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.7.0_75]
5:02:27 AM at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_75]
5:02:27 AM at net.minecraft.server.v1_8_R2.SystemUtils.a(SourceFile:60) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.MinecraftServer.A(MinecraftServer.java:670) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.DedicatedServer.A(DedicatedServer.java:336) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.MinecraftServer.z(MinecraftServer.java:626) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at net.minecraft.server.v1_8_R2.MinecraftServer.run(MinecraftServer.java:534) [bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM at java.lang.Thread.run(Unknown Source) [?:1.7.0_75]
5:02:27 AM Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
5:02:27 AM at me.herobrine112211.ulticmdpack.System.onCommand(System.java:29) ~[?:?]
5:02:27 AM at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Bukkit-61ef214]
5:02:27 AM ... 15 more

最佳答案

您收到的错误与该代码段无关。

java.lang.ArrayIndexOutOfBoundsException :

Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.

args 可能会根据用户输入而改变。 请参阅Check the arguments length来自official plugin tutorial .

if (args.length == 0) {
    player.sendMessage("Please specify the target.");
    return true;
}

弃用消息不是错误,而是警告。 你总是可以忽略它,代码无论如何都会编译。 您可能想隐藏它:将鼠标悬停在黄色突出显示的交叉文本上,然后单击添加@SuppressWarnings“弃用”

来自Spigot Javadoc ,请注意Server.getPlayer(String)未标记为 @Deprecated。 也许是 IDE 故障?尝试文件>>全部保存

关于java - 从服务器弃用了 getPlayer(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327697/

相关文章:

java - Spring:将属性文件注入(inject) map

java - Spring 3.0.2 中如何设置请求内容类型?

java - eclipse - 对未触及的文件强制保存操作

java - 我可以使用原始类作为类型并仍然使用它的子类吗?

java - DateTimeFormatterBuilder 无法选择格式

java - 我如何在 rabbitmq 中合并 channel ?

python - Python 是否有只覆盖一行的一部分的注释?

java - Eclipse插件: get extended class name using ASTParser

java - 自定义对象序列化的ArrayList

Java从config.yml中获取Maps的List of maps