QoL fix for npc players with death messages

This commit is contained in:
fullwall 2023-06-13 20:13:21 +08:00
parent 9704f1493c
commit 8b107587e7
1 changed files with 16 additions and 6 deletions

View File

@ -35,6 +35,7 @@ import org.bukkit.event.entity.EntityPortalEvent;
import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.entity.EntityTargetEvent;
import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityTransformEvent;
import org.bukkit.event.entity.ItemDespawnEvent; import org.bukkit.event.entity.ItemDespawnEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.PlayerLeashEntityEvent; import org.bukkit.event.entity.PlayerLeashEntityEvent;
import org.bukkit.event.entity.PotionSplashEvent; import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileHitEvent;
@ -340,12 +341,9 @@ public class EventListen implements Listener {
if (delay < 0) if (delay < 0)
return; return;
int deathAnimationTicks = event.getEntity() instanceof LivingEntity ? 20 : 2; int deathAnimationTicks = event.getEntity() instanceof LivingEntity ? 20 : 2;
Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), new Runnable() { Bukkit.getScheduler().scheduleSyncDelayedTask(CitizensAPI.getPlugin(), () -> {
@Override if (!npc.isSpawned() && npc.getOwningRegistry().getByUniqueId(npc.getUniqueId()) == npc) {
public void run() { npc.spawn(location, SpawnReason.TIMED_RESPAWN);
if (!npc.isSpawned() && npc.getOwningRegistry().getByUniqueId(npc.getUniqueId()) == npc) {
npc.spawn(location, SpawnReason.TIMED_RESPAWN);
}
} }
}, delay + deathAnimationTicks); }, delay + deathAnimationTicks);
} }
@ -457,6 +455,18 @@ public class EventListen implements Listener {
checkCreationEvent(event); checkCreationEvent(event);
} }
@EventHandler(ignoreCancelled = true)
public void onPlayerDeath(PlayerDeathEvent event) {
final NPC npc = CitizensAPI.getNPCRegistry().getNPC(event.getEntity());
if (npc == null) {
return;
}
if (npc.requiresNameHologram()) {
event.setDeathMessage(event.getDeathMessage().replace(npc.getEntity().getName(), npc.getFullName()));
}
}
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onPlayerFish(PlayerFishEvent event) { public void onPlayerFish(PlayerFishEvent event) {
if (CitizensAPI.getNPCRegistry().isNPC(event.getCaught()) if (CitizensAPI.getNPCRegistry().isNPC(event.getCaught())