Java 本地玩家Bukkit/插口开发

Java 本地玩家Bukkit/插口开发,java,minecraft,bukkit,Java,Minecraft,Bukkit,是否有获取本地播放器显示名称的命令。 因此,如果我创建一条聊天信息,所有玩家都会在聊天中看到自己的名字。有可能吗?怎么可能 不,您无法获取“本地”播放器名称,因为运行代码的是服务器,而不是客户端,因此您无法获取它,因为没有本地播放器。但是,您仍然可以为不同姓名的人发送自定义消息以模拟此效果 根据示例,您只需通过/tellraw命令向希望发送消息的玩家发送消息,例如: public static void sendMessage(String playerName, String msg) {

是否有获取本地播放器显示名称的命令。 因此,如果我创建一条聊天信息,所有玩家都会在聊天中看到自己的名字。有可能吗?怎么可能

不,您无法获取“本地”播放器名称,因为运行代码的是服务器,而不是客户端,因此您无法获取它,因为没有本地播放器。但是,您仍然可以为不同姓名的人发送自定义消息以模拟此效果

根据示例,您只需通过/tellraw命令向希望发送消息的玩家发送消息,例如:

public static void sendMessage(String playerName, String msg) {
        Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(),
                "/tellraw " + playerName + " {\"text\":\"" + msg.replaceAll("<playername>", playerName) + "\"}");
}
好的,但是我怎样才能将它发送给一组或一组中的每个人呢?
在这种情况下,您可以为每个玩家的每个循环使用一个

以下是向每位在线玩家发送问候信息的完整代码:

public static void sayHelloToEveryone() {
    String msg = "Hello <playername>!";
    for (Player p : Bukkit.getServer().getOnlinePlayers()) {
        p.sendMessage(msg.replaceAll("<playername>", p.getName()));
    }
}
publicstaticvoid-sayHelloToEveryone(){
String msg=“你好!”;
对于(播放器p:Bukkit.getServer().getOnlinePlayer()){
p、 sendMessage(msg.replaceAll(“,p.getName());
}
}
因此,当您使用
sayHelloToEveryone()
时,它会根据每个人的姓名向他们发送一条消息:

如果Steve和Ruben在线,服务器将向这两个用户发送不同的消息:
史蒂夫聊天室:
你好,史蒂夫

鲁本聊天室:
你好,鲁本

当你可以只做
Player::sendmages
时,使用tellraw有什么意义?您没有使用任何需要tellraw JSON的内容。@bcsb1001使用tellraw的意义在于,您可以实际指定播放器名称,而不是播放器对象,如果您要在命令中指定它们,那么就更容易了。。。尽管如此,我还是要在回答中加上这个,因为OP要求广播,谢谢!
public static void sayHelloToEveryone() {
    String msg = "Hello <playername>!";
    for (Player p : Bukkit.getServer().getOnlinePlayers()) {
        p.sendMessage(msg.replaceAll("<playername>", p.getName()));
    }
}