Spigot 插件开发 - 玩家死亡时减去变量
Spigot Plugin Development - Subtract variable when player dies
我想做一个插件,计算玩家的生命值。例如,每个玩家都有 3 条生命。每当他死去时,他都会失去 1 条生命。当他的生命值达到 0 时,他就会被禁止。
我的方法是这样的
public class OnPlayerDeath implements Listener {
private int lives = 3;
@EventHandler
public void OnDeath(PlayerDeathEvent event){
Player player = event.getEntity().getPlayer();
if (!(player.getKiller() instanceof Player))
player.sendMessage("Died by a something else. You have " + lives + " lives left.");
else {
player.sendMessage("Died by a human. You have " + lives + " lives left.");
lives--;
}
}
}
问题是,每当玩家死亡时,消息始终显示相同的变量“3”。如何解决?
您必须为每位玩家保存生命值。
尝试使用 HashMap
例如:
public class OnPlayerDeath implements Listener {
// Make new HashMap
private Map<Player, Integer> livesMap = new HashMap<>();
@EventHandler
public void OnDeath(PlayerDeathEvent event){
Player player = event.getEntity().getPlayer();
int lives;
if(!livesMap.containsKey(player)) {
// Set the default amount of lives to 2. (3 minus 1, since the player already died once)
lives = 2;
} else {
// Subtract one from the player's lives
lives = livesMap.get(player) - 1;
}
if (!(player.getKiller() instanceof Player)) {
player.sendMessage("Died by a something else. You have " + lives + " lives left.");
} else {
player.sendMessage("Died by a human. You have " + lives + " lives left.");
}
// Update new life count
livesMap.put(player, lives);
}
}
A HashMap 允许您为每个键保存一个值。在这种情况下,每个玩家的生命计数。
我想做一个插件,计算玩家的生命值。例如,每个玩家都有 3 条生命。每当他死去时,他都会失去 1 条生命。当他的生命值达到 0 时,他就会被禁止。
我的方法是这样的
public class OnPlayerDeath implements Listener {
private int lives = 3;
@EventHandler
public void OnDeath(PlayerDeathEvent event){
Player player = event.getEntity().getPlayer();
if (!(player.getKiller() instanceof Player))
player.sendMessage("Died by a something else. You have " + lives + " lives left.");
else {
player.sendMessage("Died by a human. You have " + lives + " lives left.");
lives--;
}
}
}
问题是,每当玩家死亡时,消息始终显示相同的变量“3”。如何解决?
您必须为每位玩家保存生命值。
尝试使用 HashMap
例如:
public class OnPlayerDeath implements Listener {
// Make new HashMap
private Map<Player, Integer> livesMap = new HashMap<>();
@EventHandler
public void OnDeath(PlayerDeathEvent event){
Player player = event.getEntity().getPlayer();
int lives;
if(!livesMap.containsKey(player)) {
// Set the default amount of lives to 2. (3 minus 1, since the player already died once)
lives = 2;
} else {
// Subtract one from the player's lives
lives = livesMap.get(player) - 1;
}
if (!(player.getKiller() instanceof Player)) {
player.sendMessage("Died by a something else. You have " + lives + " lives left.");
} else {
player.sendMessage("Died by a human. You have " + lives + " lives left.");
}
// Update new life count
livesMap.put(player, lives);
}
}
A HashMap 允许您为每个键保存一个值。在这种情况下,每个玩家的生命计数。