所以我开发了一个Java插件,我需要像KitPvP服务器那样做一些事情,玩家选择一个工具包,然后只有他们才能再次获得一个工具包死亡。
我已经尝试使用字符串来检查玩家是否在指挥,但我真的不知道/"如何"和他们一起做。有什么建议吗?
答案 0 :(得分:2)
你可以使用一个清单来检查玩家是否已经使用了这个套件"这一生"。 例如,在主插件类或命令类中,您可以添加如下静态成员:
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,因为你可以在我的世界中改变你的名字。
答案 1 :(得分:1)
你可以做的是创建一个列表,其中包含已经使用过该套件的玩家的名字
List<String> players = new ArrayList<String>();
然后,只要他们使用该命令,您就可以检查玩家是否在列表中
boolean isInList = players.contain(yourPlayer.getName());
您可以在处理命令时检查
if (isInList) {
player.sendMessage("You must die to use this again!");
return true; //To commandExecutor
}
如果玩家不在列表中,请将他添加到列表中并提供套件
players.add(yourPlayer.getName());
//Give the kit
每当玩家死亡时,你应该尝试从列表中删除他的名字。
@EventHandler
public void onDeath(PlayerDeathEvent e) {
//Remove player from the list
}
请注意,在onCommand
内,您拥有以下命令属性:CommandSender sender, Command cmd, String label, String[] args
。
发件人参数可能是您的播放器,您可以通过
进行检查if (sender instanceof Player) {
Player commandPlayer = (Player) sender;
}
答案 2 :(得分:-1)
我假设您使用的是Spigot API,而您可能正在搜索此类内容PlayerDeathEvent
每次玩家死亡时都会触发此操作,您可以将其与玩家列表进行比较并更新permissions(bukkit) permission(spiggot)。
希望这能回答你的问题。