code refactoring for visibility
All checks were successful
Build / build (push) Successful in 2m5s

This commit is contained in:
unurled 2024-03-18 20:27:41 +01:00
parent a5a87ebb01
commit f70b335264
Signed by: unurled
GPG key ID: FDBC9CBE1F82423F

View file

@ -22,7 +22,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByBlockEvent; import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.EntityEquipment;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -30,6 +29,7 @@ import org.jetbrains.annotations.NotNull;
@SuppressWarnings("EmptyMethod") @SuppressWarnings("EmptyMethod")
public class CombatManager extends Manager { public class CombatManager extends Manager {
public static final Random RANDOM = new Random();
private final HashMap<UUID, HashMap<Player, Double>> historyMobDamage = new HashMap<>(); private final HashMap<UUID, HashMap<Player, Double>> historyMobDamage = new HashMap<>();
@EventHandler @EventHandler
@ -63,24 +63,23 @@ public class CombatManager extends Manager {
d.playSound(d, Sound.BLOCK_ANVIL_HIT, 1.0f, 1.0f); d.playSound(d, Sound.BLOCK_ANVIL_HIT, 1.0f, 1.0f);
return; return;
} }
if (entity instanceof Mob) { if (entity instanceof 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());
if (player != null) { if (player != null) {
dStrength += player.getAttribute(Attribute.STRENGTH); dStrength += player.getAttribute(Attribute.STRENGTH);
} }
EntityEquipment equipment = ((Mob) entity).getEquipment(); EntityEquipment equipment = mob.getEquipment();
Double eDefense = Items.getTotalAttribute(equipment, Attribute.DEFENSE); double eDefense = Items.getTotalAttribute(equipment, Attribute.DEFENSE);
Double damage = dStrength - eDefense; Double damage = dStrength - eDefense;
Double dLuck = Items.getTotalAttribute(d, Attribute.LUCK); Double dLuck = Items.getTotalAttribute(d, Attribute.LUCK);
Double eLuck = Items.getTotalAttribute(equipment, Attribute.LUCK); Double eLuck = Items.getTotalAttribute(equipment, Attribute.LUCK);
Double luck = dLuck - eLuck; double luck = dLuck - eLuck;
if (luck < -1000) { if (luck < -1000) {
// 100% chance of miss // 100% chance of miss
luck = -10000d;
d.sendMessage(comp("<red>You missed!")); d.sendMessage(comp("<red>You missed!"));
d.playSound(d, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f); d.playSound(d, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f);
e.setCancelled(true); e.setCancelled(true);
@ -94,8 +93,7 @@ public class CombatManager extends Manager {
if (luck < 0) { if (luck < 0) {
// chances of miss // chances of miss
Random r = new Random(); if (RANDOM.nextBoolean()) {
if (r.nextBoolean()) {
d.playSound(d, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f); d.playSound(d, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f);
e.setCancelled(true); e.setCancelled(true);
d.sendMessage(comp("<red>You missed!")); d.sendMessage(comp("<red>You missed!"));
@ -103,8 +101,7 @@ public class CombatManager extends Manager {
} }
} else if (luck > 0 && luck < 1000) { } else if (luck > 0 && luck < 1000) {
// chance of critical hit // chance of critical hit
Random r = new Random(); if (RANDOM.nextBoolean()) {
if (r.nextBoolean()) {
d.playSound(d, Sound.ENTITY_PLAYER_ATTACK_CRIT, 1.0f, 1.0f); d.playSound(d, Sound.ENTITY_PLAYER_ATTACK_CRIT, 1.0f, 1.0f);
// damage * 2 // damage * 2
damage = damage * 2; damage = damage * 2;
@ -155,22 +152,21 @@ public class CombatManager extends Manager {
} }
} else if (entity instanceof Player player) { } else if (entity instanceof Player player) {
// damager is not player // damager is not player
if (damager instanceof Mob) { if (damager instanceof Mob mob) {
// get equipment of damager // get equipment of damager
EntityEquipment equipment = ((Mob) damager).getEquipment(); EntityEquipment equipment = mob.getEquipment();
Double dStrength = Items.getTotalAttribute(equipment, Attribute.STRENGTH); Double dStrength = Items.getTotalAttribute(equipment, Attribute.STRENGTH);
Double eDefense = Items.getTotalAttribute(player, Attribute.DEFENSE); Double eDefense = Items.getTotalAttribute(player, Attribute.DEFENSE);
Double damage = dStrength - eDefense; double damage = dStrength - eDefense;
Double dLuck = Items.getTotalAttribute(equipment, Attribute.LUCK); Double dLuck = Items.getTotalAttribute(equipment, Attribute.LUCK);
Double eLuck = Items.getTotalAttribute(player, Attribute.LUCK); Double eLuck = Items.getTotalAttribute(player, Attribute.LUCK);
Double luck = dLuck - eLuck; double luck = dLuck - eLuck;
if (luck < -1000) { if (luck < -1000) {
// 100% chance of miss // 100% chance of miss
luck = -10000d;
player.sendMessage(comp("<red>You dodged!")); player.sendMessage(comp("<red>You dodged!"));
player.playSound(player, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f); player.playSound(player, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f);
e.setCancelled(true); e.setCancelled(true);
@ -184,8 +180,7 @@ public class CombatManager extends Manager {
if (luck < 0) { if (luck < 0) {
// chances of miss // chances of miss
Random r = new Random(); if (RANDOM.nextBoolean()) {
if (r.nextBoolean()) {
player.playSound(player, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f); player.playSound(player, Sound.ENTITY_ARROW_SHOOT, 1.0f, 1.0f);
e.setCancelled(true); e.setCancelled(true);
player.sendMessage(comp("<red>You dodged!")); player.sendMessage(comp("<red>You dodged!"));
@ -193,8 +188,7 @@ public class CombatManager extends Manager {
} }
} else if (luck > 0 && luck < 1000) { } else if (luck > 0 && luck < 1000) {
// chance of critical hit // chance of critical hit
Random r = new Random(); if (RANDOM.nextBoolean()) {
if (r.nextBoolean()) {
player.playSound(player, Sound.ENTITY_PLAYER_ATTACK_CRIT, 1.0f, 1.0f); player.playSound(player, Sound.ENTITY_PLAYER_ATTACK_CRIT, 1.0f, 1.0f);
// damage * 2 // damage * 2
damage = damage * 2; damage = damage * 2;
@ -221,8 +215,6 @@ public class CombatManager extends Manager {
} }
} }
/*@EventHandler
public void onDamage(EntityDamageEvent e) {}*/
@EventHandler
public void onDamage(EntityDamageEvent e) {}
} }