This commit is contained in:
parent
a5a87ebb01
commit
f70b335264
1 changed files with 16 additions and 24 deletions
|
@ -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) {}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue