java - bukkit - 防止玩家在战斗中运行命令

标签 java minecraft bukkit

所以我正在开发一个 Java 插件,我需要做一些像现在的 KitPvP 服务器所做的事情,玩家选择一个工具包,然后他们只能在他们死后再次获得一个工具包。

我试过使用字符串来检查玩家是否处于指挥状态,但我真的不知道如何/“如何”处理它们。有什么建议吗?

最佳答案

您可以使用列表来检查玩家是否在“此生”中获得了工具包。 例如,在您的主插件类或您的命令类中,您可以像这样添加一个静态成员:

public static ArrayList<UUID> usedKit = new ArrayList<UUID>();

在 onCommand() 方法中,您可以检查玩家是否还没有得到他的工具包:

if (!usedKit.contains(player.getUniqueId())) {

    // Code to give the kit here...

    usedKit.add(player.getUniqueId()); // Adds the player to the list
} else
    player.sendMessage("You already got your kit.");
return true;

当玩家死亡时,您必须将他从列表中移除:

@EventHandler
public void onPlayerDeath(PlayerDeathEvent event) {
    if (usedKit.contains(event.getPlayer().getUniqueId()))
        usedKit.remove(event.getPlayer().getUniqueId());
}

我知道这个答案与 Kerooker 的相似,但您应该尝试使用 UniqueIds,因为您可以在 minecraft 中更改您的名字。

关于java - bukkit - 防止玩家在战斗中运行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40730546/

相关文章:

java - 如何在 Android 中为 TabActivity 更改设置动画?

mysql - Blob 中的 Skript 值已加密

java - 掉落物已被清除,但仍在掉落

java - Bukkit java 插件中的 ClassNotFoundException

java - 在同一文件中保存/加载两个 HashMap

java - 使用 Spring Controller 列出数据库中的对象

java - 64位非序列唯一ID

java - 顺序搜索二维char数组

java - 为什么我会收到 IllegalAccessError?

java - 尝试在 3D 世界中发射子弹。在 x 和 z 中遇到奇怪的偏移