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