store UUID instead of whole Player object

This commit is contained in:
unurled 2024-04-27 20:58:33 +02:00
parent 36369a3de4
commit 425adab68c
Signed by: unurled
GPG key ID: FDBC9CBE1F82423F

View file

@ -5,6 +5,7 @@ import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.spawnIndicator;
import static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.updateActionBar;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.UUID;
@ -29,19 +30,10 @@ import org.jetbrains.annotations.NotNull;
public class CombatManager extends Manager {
public static final Random RANDOM = new Random();
private final HashMap<UUID, HashMap<Player, Double>> historyMobDamage = new HashMap<>();
@EventHandler
public void onDamage(@NotNull EntityDamageByBlockEvent e) {
// TODO: Implement
// blast enchant :shrug:
// fall damage, fire damage, etc
e.setDamage(0.0);
e.setCancelled(true);
}
private final Map<UUID, Map<UUID, Double>> historyMobDamage = new HashMap<>();
private static void playerVictim(
@NotNull EntityDamageByEntityEvent e, Player player, Mob mob, PlayerManager pm) {
@NotNull EntityDamageByEntityEvent e, Player player, @NotNull Mob mob, PlayerManager pm) {
// get equipment of damager
EntityEquipment equipment = mob.getEquipment();
Double dStrength = Items.getTotalAttribute(equipment, Attribute.STRENGTH);
@ -100,6 +92,15 @@ public class CombatManager extends Manager {
// TODO: check for status effects (apply status effects depending item of damager)
}
@EventHandler
public void onDamage(@NotNull EntityDamageByBlockEvent e) {
// TODO: Implement
// blast enchant :shrug:
// fall damage, fire damage, etc
e.setDamage(0.0);
e.setCancelled(true);
}
// TODO: Finish this
@EventHandler
public void onDamage(@NotNull EntityDamageByEntityEvent e) {
@ -141,7 +142,7 @@ public class CombatManager extends Manager {
@NotNull EntityDamageByEntityEvent e,
LivingEntity entity,
Player d,
PlayerManager pm,
@NotNull PlayerManager pm,
Mob mob) {
double dStrength = Items.getTotalAttribute(d, Attribute.STRENGTH);
SRPlayer player = pm.getPlayer(d.getUniqueId());
@ -201,18 +202,19 @@ public class CombatManager extends Manager {
// TODO: check for status effects (apply status effects depending item of damager)
}
private void die(LivingEntity entity, Player d, PlayerManager pm, SREntity ent) {
private void die(
LivingEntity entity, @NotNull Player d, @NotNull PlayerManager pm, SREntity ent) {
// entity is dead, give experience to player
SRPlayer player1 = pm.getPlayer(d.getUniqueId());
if (player1 != null && ent != null) {
// calculate experience % based on damage
HashMap<Player, Double> playerDoubleHashMap = historyMobDamage.get(entity.getUniqueId());
Map<UUID, Double> playerDoubleHashMap = historyMobDamage.get(entity.getUniqueId());
if (playerDoubleHashMap == null) {
return;
}
for (Entry<Player, Double> map : playerDoubleHashMap.entrySet()) {
for (Entry<UUID, Double> map : playerDoubleHashMap.entrySet()) {
Double exp = ent.getExperience() * (map.getValue() / ent.getHealth());
SRPlayer tmp = pm.getPlayer(map.getKey().getUniqueId());
SRPlayer tmp = pm.getPlayer(map.getKey());
if (tmp != null) {
tmp.setExperience((long) (tmp.getExperience() + exp));
}
@ -220,18 +222,18 @@ public class CombatManager extends Manager {
}
}
private void historyHandler(LivingEntity entity, Player d, Double damage) {
private void historyHandler(@NotNull LivingEntity entity, Player d, Double damage) {
if (historyMobDamage.containsKey(entity.getUniqueId())) {
HashMap<Player, Double> history =
Map<UUID, Double> history =
historyMobDamage.getOrDefault(entity.getUniqueId(), new HashMap<>());
if (history.containsKey(d)) {
history.put(d, history.get(d) + damage);
if (history.containsKey(d.getUniqueId())) {
history.put(d.getUniqueId(), history.get(d.getUniqueId()) + damage);
} else {
history.put(d, damage);
history.put(d.getUniqueId(), damage);
}
} else {
HashMap<Player, Double> history = new HashMap<>();
history.put(d, damage);
Map<UUID, Double> history = new HashMap<>();
history.put(d.getUniqueId(), damage);
historyMobDamage.put(entity.getUniqueId(), history);
}
}