Skip to content
This repository has been archived by the owner on Jan 20, 2024. It is now read-only.

Commit

Permalink
Death: fix empty message when player died from a projectile
Browse files Browse the repository at this point in the history
  • Loading branch information
TheFaser committed Nov 11, 2023
1 parent 2b2d1ec commit 8f6e664
Showing 1 changed file with 24 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

import net.flectone.chat.manager.FPlayerManager;
import net.flectone.chat.model.damager.PlayerDamager;
import net.flectone.chat.model.player.FPlayer;
import net.flectone.chat.module.FListener;
import net.flectone.chat.module.FModule;
import net.flectone.chat.module.integrations.IntegrationsModule;
import net.flectone.chat.model.player.FPlayer;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
Expand All @@ -17,18 +17,21 @@
import org.bukkit.entity.Projectile;
import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.*;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.projectiles.ProjectileSource;
import org.jetbrains.annotations.NotNull;

import static net.flectone.chat.manager.FileManager.config;
import static net.flectone.chat.manager.FileManager.locale;

public class DeathListener extends FListener {

private static Player lastInteractPlayer;
private static Entity lastInteractEntity;
private static Projectile lastInteractProjectile;
private static Material lastBlockInteract;

public DeathListener(FModule module) {
Expand All @@ -41,7 +44,20 @@ public void init() {
register();
}

@EventHandler
@EventHandler(priority = EventPriority.LOWEST)
public void playerProjectileHit(@NotNull ProjectileHitEvent event) {
if (event.isCancelled()) return;
if (event.getHitEntity() == null) return;

Projectile projectile = event.getEntity();
ProjectileSource projectileSource = projectile.getShooter();
if (!(projectileSource instanceof Entity entity)) return;

lastInteractEntity = entity;
lastInteractProjectile = projectile;
}

@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerClickOnBed(@NotNull PlayerInteractEvent event) {
if (event.getClickedBlock() == null
|| !event.getAction().equals(Action.RIGHT_CLICK_BLOCK)
Expand All @@ -54,12 +70,12 @@ public void onPlayerClickOnBed(@NotNull PlayerInteractEvent event) {
if ((blockData instanceof Bed && !worldEnvironment.equals(World.Environment.NORMAL))
|| (blockData instanceof RespawnAnchor && !worldEnvironment.equals(World.Environment.NETHER))) {

lastInteractPlayer = event.getPlayer();
lastInteractEntity = event.getPlayer();
lastBlockInteract = block.getBlockData().getMaterial();
}
}

@EventHandler
@EventHandler(priority = EventPriority.LOWEST)
public void onPlayerDamageEvent(@NotNull EntityDamageEvent event) {
if (!(event.getEntity() instanceof Player player)
|| IntegrationsModule.isVanished(player)
Expand Down Expand Up @@ -121,7 +137,7 @@ public void onPlayerDeathEvent(@NotNull PlayerDeathEvent event) {
}
case BLOCK_EXPLOSION -> {
playerDamager.setFinalDamager(lastBlockInteract);
playerDamager.setKiller(lastInteractPlayer);
playerDamager.setKiller(lastInteractEntity);
}
case CONTACT -> {
Block block = ((EntityDamageByBlockEvent) lastDamageEvent).getDamager();
Expand All @@ -135,7 +151,8 @@ public void onPlayerDeathEvent(@NotNull PlayerDeathEvent event) {
}
case MAGIC -> {
if (!(lastDamageEvent instanceof EntityDamageByEntityEvent)) {
playerDamager.setKiller(null);
playerDamager.setKiller(lastInteractEntity);
playerDamager.setFinalDamager(lastInteractProjectile);
break;
}

Expand Down

0 comments on commit 8f6e664

Please sign in to comment.