类org.bukkit.event.block.BlockPhysicsEvent源码实例Demo

下面列出了怎么用org.bukkit.event.block.BlockPhysicsEvent的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Carbon-2   文件: BlockPlant.java
protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (!f(world, blockposition, iblockdata)) {
        // CraftBukkit Start
        org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
        @SuppressWarnings("deprecation")
        BlockPhysicsEvent event = new BlockPhysicsEvent(block, block.getTypeId());
        world.getServer().getPluginManager().callEvent(event);

        if (event.isCancelled()) {
            return;
        }
        // CraftBukkit end
        this.b(world, blockposition, iblockdata, 0);
        world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 3);
    }

}
 
源代码2 项目: Carbon-2   文件: BlockPlant.java
protected void e(World world, BlockPosition blockposition, IBlockData iblockdata) {
    if (!f(world, blockposition, iblockdata)) {
        // CraftBukkit Start
        org.bukkit.block.Block block = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ());
        @SuppressWarnings("deprecation")
        BlockPhysicsEvent event = new BlockPhysicsEvent(block, block.getTypeId());
        world.getServer().getPluginManager().callEvent(event);

        if (event.isCancelled()) {
            return;
        }
        // CraftBukkit end
        this.b(world, blockposition, iblockdata, 0);
        world.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 3);
    }

}
 
源代码3 项目: AreaShop   文件: SignsFeature.java
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onIndirectSignBreak(BlockPhysicsEvent event) {
	// Check if the block is a sign
	if(!Materials.isSign(event.getBlock().getType())) {
		return;
	}

	// Check if still attached to a block
	Block attachedBlock = plugin.getBukkitHandler().getSignAttachedTo(event.getBlock());
	// TODO: signs cannot be placed on all blocks, improve this check to isSolid()?
	if (attachedBlock.getType() != Material.AIR) {
		return;
	}

	// Check if the sign is really the same as a saved rent
	RegionSign regionSign = SignsFeature.getSignByLocation(event.getBlock().getLocation());
	if(regionSign == null) {
		return;
	}

	// Remove the sign so that it does not fall on the floor as an item (next region update will place it back when possible)
	AreaShop.debug("onIndirectSignBreak: Removed block of sign for", regionSign.getRegion().getName(), "at", regionSign.getStringLocation());
	event.getBlock().setType(Material.AIR);
	event.setCancelled(true);
}
 
@Override
public void updateNeighbors(BlockPosition pos, IBlockData oldState, IBlockData newState, int recursionLimit) {
    World world = getWorld();
    // a == updateNeighbors
    // b == updateDiagonalNeighbors
    oldState.b(world, pos, NOTIFY, recursionLimit);
    if (sideEffectSet.shouldApply(SideEffect.EVENTS)) {
        CraftWorld craftWorld = world.getWorld();
        if (craftWorld != null) {
            BlockPhysicsEvent event = new BlockPhysicsEvent(craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(newState));
            world.getServer().getPluginManager().callEvent(event);
            if (event.isCancelled()) {
                return;
            }
        }
    }
    newState.a(world, pos, NOTIFY, recursionLimit);
    newState.b(world, pos, NOTIFY, recursionLimit);
}
 
@Override
public void updateNeighbors(BlockPosition pos, IBlockData oldState, IBlockData newState, int recursionLimit) {
    World world = getWorld();
    // a == updateNeighbors
    // b == updateDiagonalNeighbors
    oldState.b(world, pos, NOTIFY);
    if (sideEffectSet.shouldApply(SideEffect.EVENTS)) {
        CraftWorld craftWorld = world.getWorld();
        if (craftWorld != null) {
            BlockPhysicsEvent event = new BlockPhysicsEvent(craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()), CraftBlockData.fromData(newState));
            world.getServer().getPluginManager().callEvent(event);
            if (event.isCancelled()) {
                return;
            }
        }
    }
    newState.a(world, pos, NOTIFY);
    newState.b(world, pos, NOTIFY);
}
 
@Override
public void updateNeighbors(BlockPosition pos, IBlockData oldState, IBlockData newState, int recursionLimit) {
    World world = getWorld();
    // a == updateNeighbors
    // b == updateDiagonalNeighbors
    oldState.b(world, pos, NOTIFY);
    if (sideEffectSet.shouldApply(SideEffect.EVENTS)) {
        CraftWorld craftWorld = world.getWorld();
        if (craftWorld != null) {
            BlockPhysicsEvent event = new BlockPhysicsEvent(
                craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()),
                CraftBlockData.fromData(newState));
            world.getServer().getPluginManager().callEvent(event);
            if (event.isCancelled()) {
                return;
            }
        }
    }
    newState.a(world, pos, NOTIFY);
    newState.b(world, pos, NOTIFY);
}
 
@Override
public void updateNeighbors(BlockPosition pos, IBlockData oldState, IBlockData newState, int recursionLimit) {
    World world = getWorld();
    // a == updateNeighbors
    // b == updateDiagonalNeighbors
    oldState.b(world, pos, NOTIFY);
    if (sideEffectSet.shouldApply(SideEffect.EVENTS)) {
        CraftWorld craftWorld = world.getWorld();
        if (craftWorld != null) {
            BlockPhysicsEvent event = new BlockPhysicsEvent(
                craftWorld.getBlockAt(pos.getX(), pos.getY(), pos.getZ()),
                CraftBlockData.fromData(newState));
            world.getServer().getPluginManager().callEvent(event);
            if (event.isCancelled()) {
                return;
            }
        }
    }
    newState.a(world, pos, NOTIFY);
    newState.b(world, pos, NOTIFY);
}
 
源代码8 项目: GriefDefender   文件: GDPermissionManager.java
public Tristate processResult(Claim claim, String permission, String trust, Tristate permissionValue, GDPermissionHolder permissionHolder) {
    if (GriefDefenderPlugin.debugActive) {
        // Use the event subject always if available
        // This prevents debug showing 'default' for users
        if (eventSubject != null) {
            permissionHolder = eventSubject;
        } else if (permissionHolder == null) {
            final Object source = GDCauseStackManager.getInstance().getCurrentCause().root();
            if (source instanceof GDPermissionUser) {
                permissionHolder = (GDPermissionUser) source;
            } else {
                permissionHolder = GriefDefenderPlugin.DEFAULT_HOLDER;
            }
        }

        if (this.currentEvent != null && (this.currentEvent instanceof BlockPhysicsEvent)) {
            if (((GDClaim) claim).getWorld().getTime() % 100 != 0L) {
                return permissionValue;
            }
        }

        GriefDefenderPlugin.addEventLogEntry(this.currentEvent, claim, this.eventLocation, this.eventSourceId, this.eventTargetId, this.eventSubject == null ? permissionHolder : this.eventSubject, permission, trust, permissionValue, this.eventContexts);
    }


    if (eventPlayerData != null && eventPlayerData.eventResultCache != null) {
        final Flag flag = FlagRegistryModule.getInstance().getById(permission).orElse(null);
        if (flag != null) {
            eventPlayerData.eventResultCache = new EventResultCache((GDClaim) claim, flag.getName().toLowerCase(), permissionValue);
        }
    }
    return permissionValue;
}
 
源代码9 项目: PGM   文件: RegionMatchModule.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void checkBlockPhysics(final BlockPhysicsEvent event) {
  tc.oc.pgm.filters.query.BlockQuery query =
      new tc.oc.pgm.filters.query.BlockQuery(event, event.getBlock().getState());
  for (RegionFilterApplication rfa : this.rfaContext.get(RFAScope.BLOCK_PHYSICS)) {
    if (rfa.region.contains(event.getBlock()) && processQuery(rfa, query)) break;
  }
}
 
源代码10 项目: ProjectAres   文件: EventRuleMatchModule.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void checkBlockPhysics(final BlockPhysicsEvent event) {
    BlockEventQuery query = new BlockEventQuery(event, event.getBlock().getState());
    for(EventRule rule : this.ruleContext.get(EventRuleScope.BLOCK_PHYSICS)) {
        if(rule.region().contains(event.getBlock()) && processQuery(rule, query)) break;
    }
}
 
源代码11 项目: FastAsyncWorldedit   文件: ChunkListener.java
protected boolean containsSetAir(Exception e, BlockPhysicsEvent event) {
    for (int frame = 25; frame < 35; frame++) {
        StackTraceElement elem = getElement(e, frame);
        if (elem != null) {
            String methodName = elem.getMethodName();
            // setAir | setTypeAndData (hacky, but this needs to be efficient)
            if (methodName.charAt(0) == 's' && methodName.length() == 6 || methodName.length() == 14) {
                return true;
            }
        }
    }
    return false;
}
 
源代码12 项目: PlayerVaults   文件: SignListener.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBlockPhysics(BlockPhysicsEvent event) {
    if (!PlayerVaults.getInstance().getConf().isSigns()) {
        return;
    }
    blockChangeCheck(event.getBlock().getLocation());
}
 
源代码13 项目: Shopkeepers   文件: SignShopListener.java
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
void onBlockPhysics(BlockPhysicsEvent event) {
	Block block = event.getBlock();
	if (cancelNextBlockPhysicsLoc != null && cancelNextBlockPhysicsLoc.equals(block.getLocation())) {
		event.setCancelled(true);
	} else {
		if (Utils.isSign(block.getType()) && plugin.getShopkeeperByBlock(block) != null) {
			event.setCancelled(true);
		}
	}
}
 
源代码14 项目: GriefDefender   文件: BlockEventHandler.java
@EventHandler(priority = EventPriority.HIGHEST)
public void onBlockNotify(BlockPhysicsEvent event) {
    final Block source = NMSUtil.getInstance().getSourceBlock(event);
    if (source == null) {
        return;
    }

    final Location sourceLocation = source.getLocation();
    if (sourceLocation != null && sourceLocation.equals(event.getBlock().getLocation())) {
        return;
    }

    final GDPermissionUser user = CauseContextHelper.getEventUser(sourceLocation);
    final Location location = event.getBlock().getLocation();
    if (user == null) {
        return;
    }

    final World world = event.getBlock().getWorld();
    if (!GriefDefenderPlugin.getInstance().claimsEnabledForWorld(world.getUID())) {
        return;
    }

    final GDPlayerData playerData =  GriefDefenderPlugin.getInstance().dataStore.getOrCreatePlayerData(world, user.getUniqueId());
    final GDClaim sourceClaim = this.storage.getClaimAt(sourceLocation);
    final Vector3i pos = VecHelper.toVector3i(location);
    final GDClaim targetClaim = this.storage.getClaimAt(location);
    if (sourceClaim.isWilderness() && targetClaim.isWilderness()) {
        if (playerData != null) {
            playerData.eventResultCache = new EventResultCache(targetClaim, "block-notify", Tristate.TRUE);
        }

        return;
    } else if (!sourceClaim.isWilderness() && targetClaim.isWilderness()) {
        if (playerData != null) {
            playerData.eventResultCache = new EventResultCache(targetClaim, "block-notify", Tristate.TRUE);
        }

        return;
    } // Redstone sources can end up in target
    else if (sourceClaim.getUniqueId().equals(targetClaim.getUniqueId())) {
        if (playerData != null) {
            playerData.eventResultCache = new EventResultCache(targetClaim, "block-notify", Tristate.TRUE);
        }

        return;
    } else {
        if (playerData.eventResultCache != null && playerData.eventResultCache.checkEventResultCache(targetClaim) == Tristate.TRUE) {
            return;
        }
        // Needed to handle levers notifying doors to open etc.
        if (targetClaim.isUserTrusted(user, TrustTypes.ACCESSOR)) {
            if (playerData != null) {
                playerData.eventResultCache = new EventResultCache(targetClaim, "block-notify", Tristate.TRUE);
            }
            return;
        }
    }

    event.setCancelled(true);
}
 
源代码15 项目: ProjectAres   文件: BlockPhysicsListener.java
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent event) {
    if(!allowPhysics()) {
        event.setCancelled(true);
    }
}
 
源代码16 项目: ProjectAres   文件: EnvironmentControlListener.java
@EventHandler(priority = EventPriority.HIGH)
public void physics(final BlockPhysicsEvent event) {
    event.setCancelled(true);
}
 
源代码17 项目: LagMonitor   文件: ThreadSafetyListener.java
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent blockPhysicsEvent) {
    checkSafety(blockPhysicsEvent);
}
 
源代码18 项目: DungeonsXL   文件: GlobalProtectionListener.java
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
public void onBlockPhysics(BlockPhysicsEvent event) {
    if (DPortal.getByBlock(plugin, event.getBlock()) != null) {
        event.setCancelled(true);
    }
}
 
源代码19 项目: LagMonitor   文件: ThreadSafetyListener.java
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent blockPhysicsEvent) {
    checkSafety(blockPhysicsEvent);
}
 
源代码20 项目: FunnyGuilds   文件: BlockPhysics.java
@EventHandler
public void onPhysics(BlockPhysicsEvent event) {
    if (GuildHeartProtectionHandler.isGuildHeart(event.getBlock())) {
        event.setCancelled(true);
    }
}
 
源代码21 项目: CardinalPGM   文件: WorldFreeze.java
@EventHandler
public void onBlockPysics(BlockPhysicsEvent event) {
    if (!match.isRunning()) {
        event.setCancelled(true);
    }
}
 
源代码22 项目: CardinalPGM   文件: BlockEventRegion.java
@EventHandler
public void onBlockPhysics(BlockPhysicsEvent event) {
    if (region.contains(new BlockRegion(null, event.getBlock().getLocation().toVector())) && filter.evaluate(event.getBlock(), event).equals(FilterState.DENY)) {
        event.setCancelled(true);
    }
}
 
源代码23 项目: CardinalPGM   文件: FallingBlocksModule.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onBlockUpdate(BlockPhysicsEvent event) {
    scheduleUpdate(event.getBlock());
}
 
 类所在包
 同包方法