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:
SashegDev
2026-08-27 01:55:05 +03:00
commit 10faf5679f
29 changed files with 2681 additions and 0 deletions
@@ -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);
}
}
}