Added Ghast fireball attribution

This commit is contained in:
Intelli committed 2026-05-27 19:30:18 -06:00
1 parent e2f8da9070
commit 68d3f19d93
1 file changed
+52 -24
@@ -1,13 +1,18 @@
package net.coreprotect.listener.entity;
import org.bukkit.ExplosionResult;
import java.util.Locale;
import org.bukkit.World;
import org.bukkit.entity.Creeper;
import org.bukkit.entity.EnderCrystal;
import org.bukkit.entity.EnderDragon;
import org.bukkit.entity.EnderDragonPart;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Fireball;
import org.bukkit.entity.Ghast;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Minecart;
import org.bukkit.entity.Player;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.entity.Wither;
import org.bukkit.entity.WitherSkull;
@@ -15,6 +20,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityExplodeEvent;
import org.bukkit.projectiles.ProjectileSource;
import net.coreprotect.bukkit.BukkitAdapter;
import net.coreprotect.config.Config;
@@ -32,29 +38,7 @@ public final class EntityExplodeListener extends Queue implements Listener {
}
World world = event.getLocation().getWorld();
String user = "#explosion";
if (entity instanceof TNTPrimed) {
user = "#tnt";
}
else if (entity instanceof Minecart) {
String name = entity.getType().name();
if (name.contains("TNT")) {
user = "#tnt";
}
}
else if (entity instanceof Creeper) {
user = "#creeper";
}
else if (entity instanceof EnderDragon || entity instanceof EnderDragonPart) {
user = "#enderdragon";
}
else if (entity instanceof Wither || entity instanceof WitherSkull) {
user = "#wither";
}
else if (entity instanceof EnderCrystal) {
user = "#end_crystal";
}
String user = getExplosionUser(entity);
boolean log = false;
if (Config.getConfig(world).EXPLOSIONS) {
@@ -69,4 +53,48 @@ public final class EntityExplodeListener extends Queue implements Listener {
BlockExplodeListener.processBlockExplode(user, world, event.blockList());
}
}
static String getExplosionUser(Entity entity) {
if (entity instanceof TNTPrimed) {
return "#tnt";
}
else if (entity instanceof Minecart) {
String name = entity.getType().name();
if (name.contains("TNT")) {
return "#tnt";
}
}
else if (entity instanceof Creeper) {
return "#creeper";
}
else if (entity instanceof Fireball) {
return getFireballUser((Fireball) entity);
}
else if (entity instanceof EnderDragon || entity instanceof EnderDragonPart) {
return "#enderdragon";
}
else if (entity instanceof Wither || entity instanceof WitherSkull) {
return "#wither";
}
else if (entity instanceof EnderCrystal) {
return "#end_crystal";
}
return "#explosion";
}
private static String getFireballUser(Fireball fireball) {
ProjectileSource shooter = fireball.getShooter();
if (shooter instanceof Player) {
return ((Player) shooter).getName();
}
else if (shooter instanceof Ghast) {
return "#ghast";
}
else if (shooter instanceof LivingEntity) {
return "#" + ((LivingEntity) shooter).getType().name().toLowerCase(Locale.ROOT);
}
return "#explosion";
}
}