Search in sources :

Example 6 with Cause

use of com.sk89q.worldguard.bukkit.cause.Cause in project WorldGuard by EngineHub.

the class EventAbstractionListener method onBlockFertilize.

@EventHandler(ignoreCancelled = true)
public void onBlockFertilize(BlockFertilizeEvent event) {
    if (event.getBlocks().isEmpty())
        return;
    Cause cause = create(event.getPlayer(), event.getBlock());
    Events.fireToCancel(event, new PlaceBlockEvent(event, cause, event.getBlock().getWorld(), event.getBlocks()));
}
Also used : Cause(com.sk89q.worldguard.bukkit.cause.Cause) PlaceBlockEvent(com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent) EventHandler(org.bukkit.event.EventHandler)

Example 7 with Cause

use of com.sk89q.worldguard.bukkit.cause.Cause in project WorldGuard by EngineHub.

the class EventAbstractionListener method onBlockFromTo.

// TODO: Handle EntityPortalEnterEvent
// -------------------------------------------------------------------------
// Block self-interaction
// -------------------------------------------------------------------------
@EventHandler(ignoreCancelled = true)
public void onBlockFromTo(BlockFromToEvent event) {
    WorldConfiguration config = getWorldConfig(event.getBlock().getWorld());
    // frequency events at the moment
    if (!config.useRegions || (!config.highFreqFlags && !config.checkLiquidFlow)) {
        return;
    }
    Block from = event.getBlock();
    Block to = event.getToBlock();
    Material fromType = from.getType();
    Material toType = to.getType();
    // Liquids pass this event when flowing to solid blocks
    if (Materials.isLiquid(fromType) && toType.isSolid()) {
        return;
    }
    // flow and the from/to data may not be correct.
    if ((Materials.isWater(fromType) && Materials.isWater(toType)) || (Materials.isLava(fromType) && Materials.isLava(toType))) {
        return;
    }
    Cause cause = create(from);
    // Disable since it's probably not needed
    /*if (from.getType() != Material.AIR) {
            Events.fireToCancel(event, new BreakBlockEvent(event, cause, to));
        }*/
    Events.fireToCancel(event, new PlaceBlockEvent(event, cause, to.getLocation(), from.getType()));
}
Also used : WorldConfiguration(com.sk89q.worldguard.config.WorldConfiguration) BukkitWorldConfiguration(com.sk89q.worldguard.bukkit.BukkitWorldConfiguration) Cause(com.sk89q.worldguard.bukkit.cause.Cause) FallingBlock(org.bukkit.entity.FallingBlock) Block(org.bukkit.block.Block) Material(org.bukkit.Material) PlaceBlockEvent(com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent) EventHandler(org.bukkit.event.EventHandler)

Example 8 with Cause

use of com.sk89q.worldguard.bukkit.cause.Cause in project WorldGuard by EngineHub.

the class EventAbstractionListener method onLingeringSplash.

@EventHandler(ignoreCancelled = true)
public void onLingeringSplash(LingeringPotionSplashEvent event) {
    AreaEffectCloud aec = event.getAreaEffectCloud();
    ThrownPotion potion = event.getEntity();
    World world = potion.getWorld();
    Cause cause = create(event.getEntity());
    // Fire item interaction event
    Events.fireToCancel(event, new UseItemEvent(event, cause, world, potion.getItem()));
    // Fire entity spawn event
    if (!event.isCancelled()) {
        // radius unfortunately doesn't go through with this, so only a single location is tested
        Events.fireToCancel(event, new SpawnEntityEvent(event, cause, aec.getLocation().add(0.5, 0, 0.5), EntityType.AREA_EFFECT_CLOUD));
    }
}
Also used : UseItemEvent(com.sk89q.worldguard.bukkit.event.inventory.UseItemEvent) Cause(com.sk89q.worldguard.bukkit.cause.Cause) ThrownPotion(org.bukkit.entity.ThrownPotion) AreaEffectCloud(org.bukkit.entity.AreaEffectCloud) World(org.bukkit.World) SpawnEntityEvent(com.sk89q.worldguard.bukkit.event.entity.SpawnEntityEvent) EventHandler(org.bukkit.event.EventHandler)

Example 9 with Cause

use of com.sk89q.worldguard.bukkit.cause.Cause in project WorldGuard by EngineHub.

the class EventAbstractionListener method onInventoryMoveItem.

@EventHandler(ignoreCancelled = true)
public void onInventoryMoveItem(InventoryMoveItemEvent event) {
    InventoryHolder causeHolder;
    if (HAS_SNAPSHOT_INVHOLDER) {
        causeHolder = event.getInitiator().getHolder(false);
    } else {
        causeHolder = event.getInitiator().getHolder();
    }
    WorldConfiguration wcfg = null;
    if (causeHolder instanceof Hopper && (wcfg = getWorldConfig((((Hopper) causeHolder).getWorld()))).ignoreHopperMoveEvents) {
        return;
    } else if (causeHolder instanceof HopperMinecart && (wcfg = getWorldConfig((((HopperMinecart) causeHolder).getWorld()))).ignoreHopperMoveEvents) {
        return;
    }
    Entry entry;
    if ((entry = moveItemDebounce.tryDebounce(event)) != null) {
        InventoryHolder sourceHolder;
        InventoryHolder targetHolder;
        /*if (HAS_SNAPSHOT_INVHOLDER) {
                sourceHolder = event.getSource().getHolder(false);
                targetHolder = event.getDestination().getHolder(false);
            } else {*/
        sourceHolder = event.getSource().getHolder();
        targetHolder = event.getDestination().getHolder();
        // }
        Cause cause;
        if (causeHolder instanceof Entity) {
            cause = create(causeHolder);
        } else if (causeHolder instanceof BlockState) {
            cause = create(((BlockState) causeHolder).getBlock());
        } else {
            cause = Cause.unknown();
        }
        if (causeHolder != null && !causeHolder.equals(sourceHolder)) {
            handleInventoryHolderUse(event, cause, sourceHolder);
        }
        handleInventoryHolderUse(event, cause, targetHolder);
        if (event.isCancelled() && causeHolder instanceof Hopper && wcfg.breakDeniedHoppers) {
            Bukkit.getScheduler().scheduleSyncDelayedTask(getPlugin(), () -> ((Hopper) causeHolder).getBlock().breakNaturally());
        } else {
            entry.setCancelled(event.isCancelled());
        }
    }
}
Also used : Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) WorldConfiguration(com.sk89q.worldguard.config.WorldConfiguration) BukkitWorldConfiguration(com.sk89q.worldguard.bukkit.BukkitWorldConfiguration) HopperMinecart(org.bukkit.entity.minecart.HopperMinecart) Entry(com.sk89q.worldguard.bukkit.listener.debounce.legacy.AbstractEventDebounce.Entry) BlockState(org.bukkit.block.BlockState) Cause(com.sk89q.worldguard.bukkit.cause.Cause) Hopper(org.bukkit.block.Hopper) InventoryHolder(org.bukkit.inventory.InventoryHolder) EventHandler(org.bukkit.event.EventHandler)

Example 10 with Cause

use of com.sk89q.worldguard.bukkit.cause.Cause in project WorldGuard by EngineHub.

the class EventAbstractionListener method onPotionSplash.

@EventHandler(ignoreCancelled = true)
public void onPotionSplash(PotionSplashEvent event) {
    Entity entity = event.getEntity();
    ThrownPotion potion = event.getPotion();
    World world = entity.getWorld();
    Cause cause = create(potion);
    // Fire item interaction event
    Events.fireToCancel(event, new UseItemEvent(event, cause, world, potion.getItem()));
    // Fire entity interaction event
    if (!event.isCancelled()) {
        int blocked = 0;
        int affectedSize = event.getAffectedEntities().size();
        boolean hasDamageEffect = Materials.hasDamageEffect(potion.getEffects());
        for (LivingEntity affected : event.getAffectedEntities()) {
            DelegateEvent delegate = hasDamageEffect ? new DamageEntityEvent(event, cause, affected) : new UseEntityEvent(event, cause, affected);
            // Consider the potion splash flag
            delegate.getRelevantFlags().add(Flags.POTION_SPLASH);
            if (Events.fireAndTestCancel(delegate)) {
                event.setIntensity(affected, 0);
                blocked++;
            }
        }
        if (affectedSize > 0 && blocked == affectedSize) {
            // server does weird things with this if the event is modified, so use cached number
            event.setCancelled(true);
        }
    }
}
Also used : LivingEntity(org.bukkit.entity.LivingEntity) DamageEntityEvent(com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent) Entity(org.bukkit.entity.Entity) LivingEntity(org.bukkit.entity.LivingEntity) UseItemEvent(com.sk89q.worldguard.bukkit.event.inventory.UseItemEvent) DelegateEvent(com.sk89q.worldguard.bukkit.event.DelegateEvent) Cause(com.sk89q.worldguard.bukkit.cause.Cause) UseEntityEvent(com.sk89q.worldguard.bukkit.event.entity.UseEntityEvent) ThrownPotion(org.bukkit.entity.ThrownPotion) World(org.bukkit.World) EventHandler(org.bukkit.event.EventHandler)

Aggregations

Cause (com.sk89q.worldguard.bukkit.cause.Cause)15 EventHandler (org.bukkit.event.EventHandler)15 PlaceBlockEvent (com.sk89q.worldguard.bukkit.event.block.PlaceBlockEvent)11 Block (org.bukkit.block.Block)10 BreakBlockEvent (com.sk89q.worldguard.bukkit.event.block.BreakBlockEvent)7 FallingBlock (org.bukkit.entity.FallingBlock)7 ArrayList (java.util.ArrayList)6 DelegateEvent (com.sk89q.worldguard.bukkit.event.DelegateEvent)5 DamageEntityEvent (com.sk89q.worldguard.bukkit.event.entity.DamageEntityEvent)5 SpawnEntityEvent (com.sk89q.worldguard.bukkit.event.entity.SpawnEntityEvent)5 WorldConfiguration (com.sk89q.worldguard.config.WorldConfiguration)5 Material (org.bukkit.Material)5 Entity (org.bukkit.entity.Entity)5 Player (org.bukkit.entity.Player)5 UseBlockEvent (com.sk89q.worldguard.bukkit.event.block.UseBlockEvent)4 UseEntityEvent (com.sk89q.worldguard.bukkit.event.entity.UseEntityEvent)4 UseItemEvent (com.sk89q.worldguard.bukkit.event.inventory.UseItemEvent)4 World (org.bukkit.World)4 Predicate (com.google.common.base.Predicate)3 BukkitAdapter (com.sk89q.worldedit.bukkit.BukkitAdapter)3