mirror of
https://github.com/songoda/UltimateTimber.git
synced 2024-09-27 05:12:37 +02:00
First draft of TreeDamageEvent implementation
This commit is contained in:
parent
3847ff9dc5
commit
7553a3c897
@ -0,0 +1,67 @@
|
||||
package com.craftaro.ultimatetimber.events;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.FallingBlock;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.player.PlayerEvent;
|
||||
|
||||
public class TreeDamageEvent extends PlayerEvent implements Cancellable {
|
||||
|
||||
private boolean cancelled = false;
|
||||
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.blockAttacker = 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.playerAttacker != null)
|
||||
return this.playerAttacker;
|
||||
if (this.blockAttacker != null)
|
||||
return this.blockAttacker;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player damaged by this event. This method is only here for clarification
|
||||
*/
|
||||
public Player getVictim() {
|
||||
return this.getPlayer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public HandlerList getHandlers() {
|
||||
return handlers;
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {return handlers;}
|
||||
|
||||
@Override
|
||||
public boolean isCancelled() {
|
||||
return this.cancelled;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelled(boolean cancelState) {this.cancelled = cancelState;}
|
||||
}
|
@ -9,6 +9,7 @@ import com.craftaro.ultimatetimber.animation.TreeAnimationDisintegrate;
|
||||
import com.craftaro.ultimatetimber.animation.TreeAnimationFancy;
|
||||
import com.craftaro.ultimatetimber.animation.TreeAnimationNone;
|
||||
import com.craftaro.ultimatetimber.animation.TreeAnimationType;
|
||||
import com.craftaro.ultimatetimber.events.TreeDamageEvent;
|
||||
import com.craftaro.ultimatetimber.tree.DetectedTree;
|
||||
import com.craftaro.ultimatetimber.tree.ITreeBlock;
|
||||
import com.craftaro.ultimatetimber.tree.TreeDefinition;
|
||||
@ -199,6 +200,13 @@ public class TreeAnimationManager extends Manager implements Listener, Runnable
|
||||
if (!(entity instanceof LivingEntity)) {
|
||||
continue;
|
||||
}
|
||||
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
|
||||
((LivingEntity) entity).damage(damage, fallingBlock);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user