feat: BlackKnife DeltaMine v1.0.0 - Paper 1.21.1 SWOON/Stars/Sword/Diamond/Lunge/Snipe/Tri/Overhead + Magic 4commons Parry chat 400words +12h updates
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package me.sashegdev.blackknife;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
import org.bukkit.Particle;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
|
||||
public class ParryHandler implements Listener {
|
||||
private final BlackKnifePlugin plugin;
|
||||
public ParryHandler(BlackKnifePlugin plugin) { this.plugin = plugin; }
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onDamage(EntityDamageByEntityEvent e) {
|
||||
if (!(e.getEntity() instanceof Player victim)) return;
|
||||
if (e.isCancelled()) return;
|
||||
if (BlackKnifeItem.is(victim.getInventory().getItemInMainHand()) || BlackKnifeItem.is(victim.getInventory().getItemInOffHand())) {
|
||||
TensionManager tm = plugin.getTension();
|
||||
if (tm.getTP(victim) < 37.5f) return;
|
||||
double original = e.getDamage();
|
||||
double reduced = original * 0.4;
|
||||
e.setDamage(reduced);
|
||||
tm.setTP(victim, tm.getTP(victim) - 37.5f);
|
||||
victim.getWorld().spawnParticle(Particle.CRIT, victim.getLocation().add(0, 1, 0), 12, 0.3, 0.4, 0.3, 0.1);
|
||||
victim.getWorld().spawnParticle(Particle.SMOKE, victim.getLocation().add(0, 1, 0), 8, 0.2, 0.3, 0.2, 0.02);
|
||||
victim.getWorld().playSound(victim.getLocation(), Sound.ITEM_SHIELD_BLOCK, 1f, 1.1f);
|
||||
victim.sendActionBar(Component.text(String.format("PARRY -60%% (%.0f→%.0f) -15%% TP", original, reduced)).color(NamedTextColor.AQUA));
|
||||
if (e.getDamager() instanceof Player attacker) attacker.sendActionBar(Component.text("PARRIED!").color(NamedTextColor.GRAY));
|
||||
return;
|
||||
}
|
||||
var magicListener = plugin.getMagicListener();
|
||||
if (magicListener != null && magicListener.isShielded(victim)) {
|
||||
double reduced = magicListener.reduceShieldDamage(victim, e.getDamage());
|
||||
e.setDamage(reduced);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user