Fixed a compilation error due to a sort-of-but-not-really-breaking bukkit change.

This commit is contained in:
wizjany 2014-02-28 21:21:00 -05:00
parent 1f40908c04
commit 4422d536b7
2 changed files with 16 additions and 4 deletions

View File

@ -70,6 +70,7 @@
import org.bukkit.event.entity.PotionSplashEvent; import org.bukkit.event.entity.PotionSplashEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffect;
import org.bukkit.projectiles.ProjectileSource;
import com.sk89q.worldedit.Vector; import com.sk89q.worldedit.Vector;
import com.sk89q.worldedit.blocks.BlockID; import com.sk89q.worldedit.blocks.BlockID;
@ -330,7 +331,7 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
RegionManager mgr = plugin.getGlobalRegionManager().get(player.getWorld()); RegionManager mgr = plugin.getGlobalRegionManager().get(player.getWorld());
ApplicableRegionSet set = mgr.getApplicableRegions(pt); ApplicableRegionSet set = mgr.getApplicableRegions(pt);
if (fireball.getShooter() instanceof Player) { if (fireball.getShooter() instanceof Player) {
Vector pt2 = toVector(fireball.getShooter().getLocation()); Vector pt2 = toVector(((Player) fireball.getShooter()).getLocation());
if (!mgr.getApplicableRegions(pt2).allows(DefaultFlag.PVP, plugin.wrapPlayer((Player) fireball.getShooter()))) { if (!mgr.getApplicableRegions(pt2).allows(DefaultFlag.PVP, plugin.wrapPlayer((Player) fireball.getShooter()))) {
tryCancelPVPEvent((Player) fireball.getShooter(), player, event, true); tryCancelPVPEvent((Player) fireball.getShooter(), player, event, true);
} else if (!set.allows(DefaultFlag.PVP, localPlayer)) { } else if (!set.allows(DefaultFlag.PVP, localPlayer)) {
@ -399,7 +400,13 @@ private void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
private void onEntityDamageByProjectile(EntityDamageByEntityEvent event) { private void onEntityDamageByProjectile(EntityDamageByEntityEvent event) {
Entity defender = event.getEntity(); Entity defender = event.getEntity();
Entity attacker = ((Projectile) event.getDamager()).getShooter(); Entity attacker;
ProjectileSource source = ((Projectile) event.getDamager()).getShooter();
if (source instanceof LivingEntity) {
attacker = (LivingEntity) source;
} else {
return;
}
if (defender instanceof Player) { if (defender instanceof Player) {
Player player = (Player) defender; Player player = (Player) defender;

View File

@ -28,6 +28,7 @@
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Hanging; import org.bukkit.entity.Hanging;
import org.bukkit.entity.ItemFrame; import org.bukkit.entity.ItemFrame;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Painting; import org.bukkit.entity.Painting;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile; import org.bukkit.entity.Projectile;
@ -39,6 +40,7 @@
import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause; import org.bukkit.event.hanging.HangingBreakEvent.RemoveCause;
import org.bukkit.event.hanging.HangingPlaceEvent; import org.bukkit.event.hanging.HangingPlaceEvent;
import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent;
import org.bukkit.projectiles.ProjectileSource;
import com.sk89q.worldedit.blocks.ItemID; import com.sk89q.worldedit.blocks.ItemID;
import com.sk89q.worldguard.blacklist.events.BlockBreakBlacklistEvent; import com.sk89q.worldguard.blacklist.events.BlockBreakBlacklistEvent;
@ -82,7 +84,8 @@ public void onHangingingBreak(HangingBreakEvent event) {
Entity removerEntity = entityEvent.getRemover(); Entity removerEntity = entityEvent.getRemover();
if (removerEntity instanceof Projectile) { if (removerEntity instanceof Projectile) {
Projectile projectile = (Projectile) removerEntity; Projectile projectile = (Projectile) removerEntity;
removerEntity = projectile.getShooter() != null ? projectile.getShooter() : removerEntity; ProjectileSource remover = projectile.getShooter();
removerEntity = (remover instanceof LivingEntity ? (LivingEntity) remover : null);
} }
if (removerEntity instanceof Player) { if (removerEntity instanceof Player) {
@ -123,6 +126,8 @@ public void onHangingingBreak(HangingBreakEvent event) {
} }
} }
// this now covers dispensers as well, if removerEntity is null above,
// due to a non-LivingEntity ProjectileSource
if (hanging instanceof Painting if (hanging instanceof Painting
&& (wcfg.blockEntityPaintingDestroy && (wcfg.blockEntityPaintingDestroy
|| (wcfg.useRegions || (wcfg.useRegions