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 static me.unurled.sacredrealms.sr.utils.SRPlayerUtils.updateActionBar;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -29,19 +30,10 @@ import org.jetbrains.annotations.NotNull;
|
||||||
public class CombatManager extends Manager {
|
public class CombatManager extends Manager {
|
||||||
|
|
||||||
public static final Random RANDOM = new Random();
|
public static final Random RANDOM = new Random();
|
||||||
private final HashMap<UUID, HashMap<Player, Double>> historyMobDamage = new HashMap<>();
|
private final Map<UUID, Map<UUID, 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 static void playerVictim(
|
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
|
// get equipment of damager
|
||||||
EntityEquipment equipment = mob.getEquipment();
|
EntityEquipment equipment = mob.getEquipment();
|
||||||
Double dStrength = Items.getTotalAttribute(equipment, Attribute.STRENGTH);
|
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)
|
// 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
|
// TODO: Finish this
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onDamage(@NotNull EntityDamageByEntityEvent e) {
|
public void onDamage(@NotNull EntityDamageByEntityEvent e) {
|
||||||
|
@ -141,7 +142,7 @@ public class CombatManager extends Manager {
|
||||||
@NotNull EntityDamageByEntityEvent e,
|
@NotNull EntityDamageByEntityEvent e,
|
||||||
LivingEntity entity,
|
LivingEntity entity,
|
||||||
Player d,
|
Player d,
|
||||||
PlayerManager pm,
|
@NotNull PlayerManager pm,
|
||||||
Mob mob) {
|
Mob mob) {
|
||||||
double dStrength = Items.getTotalAttribute(d, Attribute.STRENGTH);
|
double dStrength = Items.getTotalAttribute(d, Attribute.STRENGTH);
|
||||||
SRPlayer player = pm.getPlayer(d.getUniqueId());
|
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)
|
// 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
|
// entity is dead, give experience to player
|
||||||
SRPlayer player1 = pm.getPlayer(d.getUniqueId());
|
SRPlayer player1 = pm.getPlayer(d.getUniqueId());
|
||||||
if (player1 != null && ent != null) {
|
if (player1 != null && ent != null) {
|
||||||
// calculate experience % based on damage
|
// calculate experience % based on damage
|
||||||
HashMap<Player, Double> playerDoubleHashMap = historyMobDamage.get(entity.getUniqueId());
|
Map<UUID, Double> playerDoubleHashMap = historyMobDamage.get(entity.getUniqueId());
|
||||||
if (playerDoubleHashMap == null) {
|
if (playerDoubleHashMap == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (Entry<Player, Double> map : playerDoubleHashMap.entrySet()) {
|
for (Entry<UUID, Double> map : playerDoubleHashMap.entrySet()) {
|
||||||
Double exp = ent.getExperience() * (map.getValue() / ent.getHealth());
|
Double exp = ent.getExperience() * (map.getValue() / ent.getHealth());
|
||||||
SRPlayer tmp = pm.getPlayer(map.getKey().getUniqueId());
|
SRPlayer tmp = pm.getPlayer(map.getKey());
|
||||||
if (tmp != null) {
|
if (tmp != null) {
|
||||||
tmp.setExperience((long) (tmp.getExperience() + exp));
|
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())) {
|
if (historyMobDamage.containsKey(entity.getUniqueId())) {
|
||||||
HashMap<Player, Double> history =
|
Map<UUID, Double> history =
|
||||||
historyMobDamage.getOrDefault(entity.getUniqueId(), new HashMap<>());
|
historyMobDamage.getOrDefault(entity.getUniqueId(), new HashMap<>());
|
||||||
if (history.containsKey(d)) {
|
if (history.containsKey(d.getUniqueId())) {
|
||||||
history.put(d, history.get(d) + damage);
|
history.put(d.getUniqueId(), history.get(d.getUniqueId()) + damage);
|
||||||
} else {
|
} else {
|
||||||
history.put(d, damage);
|
history.put(d.getUniqueId(), damage);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
HashMap<Player, Double> history = new HashMap<>();
|
Map<UUID, Double> history = new HashMap<>();
|
||||||
history.put(d, damage);
|
history.put(d.getUniqueId(), damage);
|
||||||
historyMobDamage.put(entity.getUniqueId(), history);
|
historyMobDamage.put(entity.getUniqueId(), history);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue