store UUID instead of whole Player object
This commit is contained in:
parent
36369a3de4
commit
425adab68c
1 changed files with 25 additions and 23 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue