Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向玩家对象添加属性?_Java_Bukkit - Fatal编程技术网

Java 如何向玩家对象添加属性?

Java 如何向玩家对象添加属性?,java,bukkit,Java,Bukkit,我不知道这些词是否正确,但在我的插件中,玩家必须选择一个类,我不知道如何区分这些类。每个职业都有独特的法术/技能。如果我可以向播放器添加一个属性(例如,每个类的布尔值;如果它们是该类,则为true,否则为false)并返回值,这将解决我的问题。我将如何做到这一点?我认为您可以使用元数据做到这一点。查看包org.bukkit.metadata如果不需要跨服务器实例维护该属性,请使用Player的界面。但是,它很难使用(而且速度很慢),并且在关闭或重新加载时无法保存 您可以使用Map将每个播放器的U

我不知道这些词是否正确,但在我的插件中,玩家必须选择一个类,我不知道如何区分这些类。每个职业都有独特的法术/技能。如果我可以向播放器添加一个属性(例如,每个类的布尔值;如果它们是该类,则为true,否则为false)并返回值,这将解决我的问题。我将如何做到这一点?

我认为您可以使用元数据做到这一点。查看包org.bukkit.metadata

如果不需要跨服务器实例维护该属性,请使用
Player
的界面。但是,它很难使用(而且速度很慢),并且在关闭或重新加载时无法保存

您可以使用
Map
将每个播放器的UUID映射到属性:

private static final Map<UUID, Boolean> playerProperties = new HashMap<>();

@Override
public void onEnable() {
    // Load from file / database
}

@Override
public void onDisable() {
    // Save to file / database
}

我不熟悉散列映射。你能像字符串一样为每个玩家存储一个布尔值吗?
private static final Set<UUID> playerProperties = new HashSet<>();

@Override
public void onEnable() {
    // Load from file / database
}

@Override
public void onDisable() {
    // Save to file / database
}

public boolean getPlayerProperty(Player player) {
    return playerProperties.contains(player.getUUID());
}

public void setPlayerProperty(Player player, boolean newProperty) {
    if (newProperty)
        playerProperties.add(player.getUUID());
    else
        playerProperties.remove(player.getUUID());
}