- Баллы
- 66
Приветствую! Есть такой код:
Он добавляет систему жажды в игру, которая выводится на HUD пузырьков воздуха. Но при изменении значения жажды одним игроком оно меняется и у остальных. Суть вопроса: как сделать код, грубо говоря, функционирующим согласно этому алгоритму для каждого игрока одинаково, но с его (игрока) уникальными значениями?
PHP:
public class Debuffs extends JavaPlugin implements Listener {
public void onEnable() {
Bukkit.getPluginManager().registerEvents(new Debfs(), this);
Bukkit.getPluginManager().registerEvents(this, this);
getLogger().info("Enable!");
}
public void onDisable() {
getLogger().info("Disable!");
}
static int[] numArr = new int[]{3};
static int[] Air = new int[]{3};
@EventHandler
public void thrst1(PlayerJoinEvent e) {
Player p = e.getPlayer();
numArr[0] = p.getRemainingAir();
Bukkit.getScheduler().runTaskTimer(this, () -> {
for(Player player : Bukkit.getOnlinePlayers()){
numArr[0] = numArr[0]-20;
}
}, 0, 40*20L);
Bukkit.getScheduler().runTaskTimer(this, () -> {
for(Player player : Bukkit.getOnlinePlayers()){
player.setRemainingAir(numArr[0]);
}
}, 0, 2);
Bukkit.getScheduler().runTaskTimer(this, () -> {
if(numArr[0] < 0) {
p.damage(2);
}
}, 0, 5);
}
@EventHandler
public void onPotionDrink(PlayerItemConsumeEvent e) {
Player player = e.getPlayer();
if (e.getItem().getType() == Material.POTION && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+60;
}
if (e.getItem().getType() == Material.MILK_BUCKET && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+40;
}
if (e.getItem().getType() == Material.APPLE && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+20;
}
if (e.getItem().getType() == Material.BEETROOT_SOUP && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+40;
}
if (e.getItem().getType() == Material.MUSHROOM_STEW && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+20;
}
if (e.getItem().getType() == Material.MELON_SLICE && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]+40;
}
if (e.getItem().getType() == Material.ROTTEN_FLESH && player.getRemainingAir() < 300) {
numArr[0] = numArr[0]-20;
}
if (numArr[0] < 50) {
player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 250, 1));
}
}
@EventHandler
public void air(PlayerRespawnEvent e) {
Air[0] = 200;
numArr[0] = 300;
}
@EventHandler
public void air1(PlayerJoinEvent e) {
Player p = e.getPlayer();
BossBar bb = Bukkit.createBossBar("Воздух", BarColor.BLUE, BarStyle.SEGMENTED_6);
bb.addPlayer(p);
Bukkit.getScheduler().runTaskTimer(this, () -> {
for(Player player : Bukkit.getOnlinePlayers()){
if(p.getWorld().getBlockAt(p.getLocation()).getType() != Material.AIR && Air[0] < 201) {
bb.setVisible(true);
bb.setProgress(bb.getProgress() - 0.1);
Air[0] = Air[0]-20;
}
else {
bb.setVisible(false);
Air[0] = Air[0]+20;
}
}
}, 0, 1L);
Bukkit.getScheduler().runTaskTimer(this, () -> {
if(Air[0] < 0) {
p.damage(2);
}
}, 0, 5);
}
}