我不太清楚这些是否是正确的单词,但在我的插件中,玩家必须选择一个类,我不太清楚如何分类。每个级别都有独特的法术/技能。如果我可以为一个玩家添加一个属性(例如每个类的布尔值;如果它们是那个类,则为true,否则为false)并返回值,这将解决我的问题。我该怎么做?
答案 0 :(得分:2)
如果不需要跨服务器实例维护该属性,请使用Player
的{{3}}接口。但是,使用起来很困难(也很慢),关闭或重新加载时不会保存。
您可以使用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
}
从那里,你可以获得playerProperties.get(player.getUUID())
的玩家的财产。
但是,由于该属性是一个布尔值,因此使用Set
并使用该属性存储玩家,使用Metadatable
检查属性时算法更有效:
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());
}
答案 1 :(得分:-1)
我认为您可以使用元数据执行此操作。请查看包org.bukkit.metadata
中的https://hub.spigotmc.org/javadocs/bukkit/