package org.example.pve.listeners.tougao;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.*;
import org.bukkit.entity.*;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.EntitySpawnEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.*;
import org.bukkit.inventory.ItemStack;
import org.bukkit.persistence.PersistentDataType;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.util.Vector;
import org.example.pve.items.tougao.*;
import org.example.pve.items.zc.old_cs.*;
import org.example.pve.items.tesu.chaoxi;
import org.example.pve.items.tesu.lpp;
import org.example.pve.items.tesu.op;
import org.example.pve.items.zc.blowd;
import org.example.pve.items.zc.qiang;
import org.example.pve.items.zc.wuying;
import org.example.pve.pve;
import java.util.*;
import org.bukkit.Particle; // Bukkit API
import org.bukkit.Color;
import org.example.pve.way.muscle_effect;
import org.example.pve.way.team;
import static org.example.pve.way.team.isteam;
public class emiyaListener implements Listener {
//tnt水花
private final Map<UUID, Long> tntsplashingcooldown = new HashMap<>();
@EventHandler
public void tntsplashing(PlayerInteractEvent event) {
if (!event.getAction().toString().contains("RIGHT_CLICK")) return;
Player player = event.getPlayer();
ItemStack item = player.getInventory().getItemInMainHand();
UUID playerId = player.getUniqueId();
long currentTime = System.currentTimeMillis();
if (tntsplashingcooldown.containsKey(playerId)) {
long elapsed = (currentTime - tntsplashingcooldown.get(playerId)) / 1000;
if ((elapsed < 15)) {
player.sendMessage(Component.text("冷却中,还要" + (15 - elapsed) + "秒").color(NamedTextColor.RED));
return;
}
}
tntsplashingcooldown.put(playerId, currentTime);
launchTNT(player);
}
private void launchTNT(Player player) {
Location centre = player.getLocation();
double r = 2.0f;
double v = 1.5f;
int count = 10;
double angleall = 360.0 / count;
player.playSound(centre, Sound.ENTITY_FIREWORK_ROCKET_LAUNCH, 1.0f, 0.8f);
for (int i = 0; i < count; i++) {
double angle = Math.toRadians(angleall * i);
double x = Math.cos(angle) * r;
double z = Math.sin(angle) * r;
Vector direction = new Vector(
x,
0.5f,
z
).normalize().multiply(v);
TNTPrimed tnt = (TNTPrimed) centre.getWorld().spawnEntity(
centre.clone().add(
x,
1,
z
),
EntityType.TNT
);
tnt.setVelocity(direction);
tnt.setFuseTicks(60);
tnt.setIsIncendiary(false);
tnt.setYield(0);
new BukkitRunnable() {
@Override
public void run() {
if (!tnt.isValid()) return;
Location loc = tnt.getLocation();
loc.getWorld().playSound(loc, Sound.ENTITY_GENERIC_EXPLODE, 1, 1);
for (Entity nearby : loc.getWorld().getNearbyEntities(loc, 5 ,5 ,5)) {
if (nearby instanceof LivingEntity &&
!nearby.equals(player)) {
((LivingEntity) nearby).damage(15, player);
}
}
tnt.remove();
}
}.runTaskLater(this, 60);
}
}
@EventHandler
public void nonbreak(EntityExplodeEvent event) {
if (event.getEntity() instanceof TNTPrimed) {
event.blockList().clear();
event.setYield(0);
}0
}
//珍珠炮
private final Map<UUID, Long> tntspeededcooldown = new HashMap<>();
@EventHandler
public void tntspeeded(PlayerInteractEvent event) {
if (!event.getAction().toString().contains("RIGHT_CLICK")) return;
Player player = event.getPlayer();
ItemStack item = player.getInventory().getItemInMainHand();
UUID playerId = player.getUniqueId();
long currentTime = System.currentTimeMillis();
if (tntspeededcooldown.containsKey(playerId)) {
long elapsed = (currentTime - tntspeededcooldown.get(playerId)) / 1000;
if ((elapsed < 15)) {
player.sendMessage(Component.text("冷却中,还要" + (15 - elapsed) + "秒").color(NamedTextColor.RED));
return;
}
}
tntspeededcooldown.put(playerId, currentTime);
EnderPearl pearl = player.launchProjectile(EnderPearl.class);
pearl.setVelocity(player.getLocation().getDirection().multiply(2));
player.addPotionEffect(new PotionEffect(
PotionEffectType.SPEED,
200,
6
));
player.getWorld().createExplosion(
player.getLocation(),
63.0f,
false,
false
);
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_TNT_PRIMED, 1.0f, 1.0f);
tntspeededcooldown.put(player.getUniqueId(), currentTime);
}
//自爆
@EventHandler
public void boomself(PlayerInteractEvent event) {
if (!event.getAction().toString().contains("RIGHT_CLICK")) return;
Player player = event.getPlayer();
ItemStack item = player.getInventory().getItemInMainHand();
player.sendMessage(Component.text("have a good night").color(NamedTextColor.DARK_RED));
player.getWorld().createExplosion(
player.getLocation(),
127.0f,
false,
false
);
player.setHealth(0);
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_TNT_PRIMED, 1.0f, 1.0f);
}
}