You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.6 KiB
74 lines
1.6 KiB
package com.benjocraeft.sharehealth;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.GameMode;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import java.util.Formatter;
|
|
import java.util.Locale;
|
|
|
|
public class HealthManager {
|
|
|
|
private double health = 20;
|
|
|
|
double getHealth(){
|
|
return health;
|
|
}
|
|
|
|
void setHealth(double health){
|
|
if (health > 20)
|
|
health = 20;
|
|
if (health < 0)
|
|
health = 0;
|
|
this.health = health;
|
|
}
|
|
|
|
String getHealthString(){
|
|
return new Formatter(Locale.US).format("%.2f", health).toString();
|
|
}
|
|
|
|
|
|
public HealthManager() {
|
|
|
|
}
|
|
public void updatePlayer(Player player){
|
|
if (player.getGameMode().equals(GameMode.SURVIVAL))
|
|
player.setHealth(health);
|
|
if (player.getGameMode().equals(GameMode.SPECTATOR))
|
|
player.setHealth(20);
|
|
}
|
|
|
|
private void subtractHealth(double sub){
|
|
setHealth(health - sub);
|
|
}
|
|
|
|
void addHealth(double add){
|
|
setHealth(health + add);
|
|
}
|
|
|
|
void reset(){
|
|
health = 20;
|
|
Bukkit.getOnlinePlayers().forEach(p -> p.setHealth(health));
|
|
}
|
|
|
|
boolean onPlayerGotDamage(Player player, double damage){
|
|
subtractHealth(damage);
|
|
setHealthByPlayer(player);
|
|
|
|
return health > 0;
|
|
}
|
|
|
|
void onPlayerRegainedHealth(Player player, double regainedHealth){
|
|
addHealth(regainedHealth);
|
|
setHealthByPlayer(player);
|
|
}
|
|
|
|
void setHealthByPlayer(Player player){
|
|
for (Player p : Sharehealth.GetAlivePlayers()){
|
|
if (p.equals(player))
|
|
continue;
|
|
p.setHealth(health);
|
|
}
|
|
}
|
|
|
|
}
|
|
|