Finished TreeDamageEvent implementation

This commit is contained in:
General Zimmer 2023-03-08 16:32:05 +01:00
parent 3c16378d7e
commit e16f05d4ca
2 changed files with 34 additions and 3 deletions

View File

@ -1,5 +1,6 @@
package com.songoda.ultimatetimber.events;
import org.bukkit.entity.Entity;
import org.bukkit.entity.FallingBlock;
import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
@ -9,15 +10,44 @@ import org.bukkit.event.player.PlayerEvent;
public class TreeDamageEvent extends PlayerEvent implements Cancellable {
private boolean cancelled = false;
private final FallingBlock attacker;
private FallingBlock blockAttacker = null;
private Player playerAttacker = null;
private static final HandlerList handlers = new HandlerList();
/**
* Represents a TreeDamage event.
*/
public TreeDamageEvent(FallingBlock attacker, Player victim) {
super(victim);
this.attacker = attacker;
this.blockAttacker = attacker;
}
public FallingBlock getAttacker() {return this.attacker;}
// Hoping this one is used whenever possible
/**
* Represents a TreeDamage event.
*/
public TreeDamageEvent(Player attacker, Player victim) {
super(victim);
this.playerAttacker = attacker;
}
/**
* @return the attacker as either FallingBlock or Player
*/
public Entity getAttacker() {
if (this.blockAttacker != null)
return this.blockAttacker;
if (this.playerAttacker != null)
return this.playerAttacker;
return null;
}
/**
* Get Player damaged by this event
*/
public Player getVictim() {
return this.getPlayer();
}
@Override
public HandlerList getHandlers() {

View File

@ -187,6 +187,7 @@ public class TreeAnimationManager extends Manager implements Listener, Runnable
if (entity instanceof Player) {
Player p = ((Player) entity).getPlayer();
TreeDamageEvent treeDamageEvent = new TreeDamageEvent(fallingBlock, p);
Bukkit.getServer().getPluginManager().callEvent(treeDamageEvent);
if (!treeDamageEvent.isCancelled())
((LivingEntity) entity).damage(damage, fallingBlock);
} else