Sacred realms

This commit is contained in:
unurled 2024-02-26 21:04:42 +01:00
commit aa1c13c74c
Signed by: unurled
GPG key ID: FDBC9CBE1F82423F
28 changed files with 1651 additions and 0 deletions

View file

@ -0,0 +1,84 @@
package me.unurled.sacredrealms.sr.components.combat;
import static me.unurled.sacredrealms.sr.utils.Component.comp;
import me.unurled.sacredrealms.sr.components.attributes.Attribute;
import me.unurled.sacredrealms.sr.managers.Manager;
import me.unurled.sacredrealms.sr.utils.Items;
import org.bukkit.Sound;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Mob;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.entity.EntityDamageByBlockEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.inventory.EntityEquipment;
public class CombatManager extends Manager {
@EventHandler
public void onDamage(EntityDamageByBlockEvent e) {
// TODO: Implement
// blast enchant :shrug:
}
// TODO: Finish this
@EventHandler
public void onDamage(EntityDamageByEntityEvent e) {
e.setDamage(0.0);
if (!(e.getDamager() instanceof LivingEntity) || !(e.getEntity() instanceof LivingEntity)) {
return;
}
LivingEntity damager = (LivingEntity) e.getDamager();
LivingEntity entity = (LivingEntity) e.getEntity();
if (damager instanceof Player d) {
if (entity instanceof Player) {
// no pvp
e.setCancelled(true);
d.sendMessage(comp("<red>You can't attack players!"));
d.playSound(d, Sound.BLOCK_ANVIL_HIT, 1.0f, 1.0f);
return;
}
if (entity instanceof Mob) {
Double dStrength = Items.getTotalAttribute(d, Attribute.STRENGTH);
EntityEquipment equipment = ((Mob) entity).getEquipment();
Double eDefense = Items.getTotalAttribute(equipment, Attribute.DEFENSE);
Double dLuck = Items.getTotalAttribute(d, Attribute.LUCK);
Double eLuck = Items.getTotalAttribute(equipment, Attribute.LUCK);
Double luck = dLuck - eLuck;
if (luck < -1000) {
// 100% chance of miss
luck = -10000d;
d.sendMessage(comp("<red>You missed!"));
// TODO: play miss sound
// d.playSound();
e.setCancelled(true);
return;
} else if (luck > 1000) {
// 100% chance of critical hit
luck = 10000d;
}
if (luck < 0) {
// chances of miss
} else if (luck > 0) {
// chance of critical hit
} else {
}
}
} else if (entity instanceof Player) {
}
}
@EventHandler
public void onDamage(EntityDamageEvent e) {}
}