Java Code Examples for org.bukkit.block.BlockFace

The following are top voted examples for showing how to use org.bukkit.block.BlockFace. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to generate more good examples.
Example 1
Project: Crescent   File: BehaviourListeners.java   Source Code and License 6 votes vote down vote up
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
	final Player player = event.getPlayer();

	final Material from = event.getFrom().getBlock().getRelative(BlockFace.DOWN).getType();

	final Behaviour behaviour = Profile.getProfile(player.getUniqueId()).getBehaviour();

	final long current = System.currentTimeMillis();

	if (player.isSprinting()) {
		behaviour.getMotion().setLastSprint(current);
	}
	if (player.isFlying()) {
		behaviour.getMotion().setLastFly(current);
	}

	if (from.isSolid() || behaviour.getMotion().getLastY() == -1.0 || !behaviour.getMotion().isDescending()) {
		behaviour.getMotion().setLastY(player.getLocation().getY());
	}

	if (!behaviour.isOnGround()) {
		behaviour.getMotion().setLastYDiff(event.getTo().getY() - event.getFrom().getY());
	}
}
 
Example 2
Project: PA   File: IronElevators.java   Source Code and License 6 votes vote down vote up
@EventHandler(priority = EventPriority.HIGH)
public void downElevator(PlayerToggleSneakEvent e) {
    Player p = e.getPlayer();
    Block b = p.getLocation().getBlock().getRelative(BlockFace.DOWN);
    if (!p.isSneaking() && b.getType() == elevatorMaterial) {
        b = b.getRelative(BlockFace.DOWN, minElevation);
        int i = maxElevation; //16
        while (i > 0 && !(b.getType() == elevatorMaterial && b.getRelative(BlockFace.UP).getType().isTransparent() && b.getRelative(BlockFace.UP, 2).getType().isTransparent())) {
            i--;
            b = b.getRelative(BlockFace.DOWN);
        }
        if (i > 0) {
            Location l = p.getLocation();
            l.setY(l.getY() - maxElevation - 2 + i);
            p.teleport(l);
            p.getWorld().playSound(p.getLocation(), Sound.ENTITY_IRONGOLEM_ATTACK, 1, 1);
        }
    }
}
 
Example 3
Project: CropControl   File: CropControlEventHandler.java   Source Code and License 6 votes vote down vote up
/**
 * So far specifically handles these cases:
 * 
 * 1) Block broken is tracked
 * 2) Block breaks by not-players
 * 3) Block breaks by players
 * 4) Indirect block breaks -- destroying block supporting a crop or collapsible tree, or under mushrooms
 * 5) Indirect block break of cocoa bearing logs
 * 6) Block broken had mushroom on top and cocoa on the sides
 * 
 * @param e The event
 */
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBreak(BlockBreakEvent e) {
	Block block = e.getBlock();
	Player player = e.getPlayer();
	BreakType type = player != null ? BreakType.PLAYER : BreakType.NATURAL;
	UUID uuid = player != null ? player.getUniqueId() : null;
	if (maybeSideTracked(block)) {
		trySideBreak(block, type, uuid);
	}
	if (maybeBelowTracked(block)) {
		block = block.getRelative(BlockFace.UP);
	}
	Location loc = block.getLocation();
	if (!pendingChecks.contains(loc)) {
		pendingChecks.add(loc);
		handleBreak(block, type, uuid, null);
	}
}
 
Example 4
Project: CropControl   File: CropControlEventHandler.java   Source Code and License 6 votes vote down vote up
/**
 * So far specifically handles these cases:
 * 
 * 1) Block burnt is tracked
 * 2) Block burnt is under a tracked block (probably only mushrooms eligible)
 * 3) Block burnt was a jungle tree, checks for cocoa.
 * 4) Burnt block had mushroom on top and cocoa on the sides
 * 
 * @param e The event
 */
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockBurn(BlockBurnEvent e) {
	Block block = e.getBlock();
	if (maybeSideTracked(block)) {
		trySideBreak(block, BreakType.FIRE, null);
	}
	if (maybeBelowTracked(block)) {
		block = block.getRelative(BlockFace.UP);
	}
	Location loc = block.getLocation();
	if (!pendingChecks.contains(loc)) {
		pendingChecks.add(loc);
		handleBreak(block, BreakType.FIRE, null, null);
	}
}
 
Example 5
Project: Uranium   File: CraftBlock.java   Source Code and License 6 votes vote down vote up
/**
 * Notch uses a 0-5 to mean DOWN, UP, NORTH, SOUTH, WEST, EAST
 * in that order all over. This method is convenience to convert for us.
 *
 * @return BlockFace the BlockFace represented by this number
 */
public static BlockFace notchToBlockFace(int notch) {
    switch (notch) {
    case 0:
        return BlockFace.DOWN;
    case 1:
        return BlockFace.UP;
    case 2:
        return BlockFace.NORTH;
    case 3:
        return BlockFace.SOUTH;
    case 4:
        return BlockFace.WEST;
    case 5:
        return BlockFace.EAST;
    default:
        return BlockFace.SELF;
    }
}
 
Example 6
Project: Uranium   File: CraftBlock.java   Source Code and License 6 votes vote down vote up
public static int blockFaceToNotch(BlockFace face) {
    switch (face) {
    case DOWN:
        return 0;
    case UP:
        return 1;
    case NORTH:
        return 2;
    case SOUTH:
        return 3;
    case WEST:
        return 4;
    case EAST:
        return 5;
    default:
        return 7; // Good as anything here, but technically invalid
    }
}
 
Example 7
Project: NeverLag   File: AntiQuickShopDoubleChest.java   Source Code and License 6 votes vote down vote up
private boolean isShopBlockNearby(Block b) {
	if (b == null) {
		return false;
	}
	Block nearChest = null;
	if (b.getType() == Material.CHEST) {
		nearChest = getBlockNearby(b, Material.CHEST);
	} else if (b.getType() == Material.TRAPPED_CHEST) {
		nearChest = getBlockNearby(b, Material.TRAPPED_CHEST);
	}
	if (nearChest == null) {
		return false;
	}
	for (BlockFace face : BLOCKFACE) {
		Block maybeSign = nearChest.getRelative(face);
		if (maybeSign != null && Material.WALL_SIGN == maybeSign.getType()) {
			Sign sign = (Sign) maybeSign.getState();
			if (sign.getLines().length > 0 && sign.getLines()[0].contains(cm.quickshopSignFlag)) {
				return true;
			}
		}
	}
	return false;
}
 
Example 8
Project: EscapeLag   File: BonemealDupePatch.java   Source Code and License 6 votes vote down vote up
@EventHandler
public void TreeGrowChecker(StructureGrowEvent event) {
    if (ConfigPatch.safetyBonemeal) {
    	if(event.isFromBonemeal() == false) {
    		return;
    	}
    	List<BlockState> blocks = event.getBlocks();
    	int bs = blocks.size();
    	for(int i = 0;i<bs;i++){
    		Block block = blocks.get(i).getBlock();
    		if(block.getType() != Material.AIR && block.getType() != Material.SAPLING && block.getType() != event.getLocation().getBlock().getRelative(BlockFace.DOWN).getType()){
    			event.setCancelled(true);
                if (event.getPlayer() != null) {
                    AzureAPI.log(event.getPlayer(), "§c这棵树生长区域有方块阻挡,请不要尝试利用骨粉BUG!");
                    return;
                }
    		}
    	}
    }
}
 
Example 9
Project: Arcadia-Spigot   File: DeadEndGame.java   Source Code and License 6 votes vote down vote up
@EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    if(this.getAPI().getGameManager().isAlive(event.getPlayer())) {
        if(event.getTo().getY() <= Integer.valueOf((String) this.getGameMap().fetchSetting("floorLevel"))) {
            this.getAPI().getGameManager().setAlive(event.getPlayer(), false);
        } else {
            final Block block = event.getTo().getBlock().getRelative(BlockFace.DOWN);
            if(block.getType() != Material.AIR) {
                if(!pendingDeletion.contains(block)) {
                    pendingDeletion.add(block);
                    new BukkitRunnable() {
                        public void run() {
                            if(pendingDeletion.contains(block)) {
                                block.setType(Material.AIR);
                                pendingDeletion.remove(block);
                            }
                        }
                    }.runTaskLater(this.getAPI().getPlugin(), 3L);
                }
            }
        }
    }
}
 
Example 10
Project: AlphaLibary   File: BarrelForm.java   Source Code and License 6 votes vote down vote up
@Override
public void send(Player p) {
    if (direction == BlockFace.UP || direction == BlockFace.DOWN) {
        new CircleForm(getLocation(), "y", getDense(), getRadius(), getAction()).send(p);
        new CircleForm(getLocation().clone().add(0, getDepth(), 0), "y", getDense(), getRadius(), getAction()).send(p);

        for (double d = getDense(); d < getDepth() - getDense(); d += getDense())
            new CircleForm(getLocation().clone().add(0, d, 0), "y", getDense(), getRadius(), getAction()).send(p);
    } else if (direction == BlockFace.EAST || direction == BlockFace.WEST) {
        new CircleForm(getLocation(), "z", getDense(), getRadius(), getAction()).send(p);
        new CircleForm(getLocation().clone().add(getDepth(), 0, 0), "z", getDense(), getRadius(), getAction()).send(p);

        for (double d = getDense(); d < getDepth() - getDense(); d += getDense())
            new CircleForm(getLocation().clone().add(d, 0, 0), "z", getDense(), getRadius(), getAction()).send(p);
    } else {
        new CircleForm(getLocation(), "x", getDense(), getRadius(), getAction()).send(p);
        new CircleForm(getLocation().clone().add(0, 0, getDepth()), "x", getDense(), getRadius(), getAction()).send(p);

        for (double d = getDense(); d < getDepth() - getDense(); d += getDense())
            new CircleForm(getLocation().clone().add(0, 0, d), "x", getDense(), getRadius(), getAction()).send(p);
    }
}
 
Example 11
Project: SparseBukkitAPI   File: BukkitUtils.java   Source Code and License 6 votes vote down vote up
public static Vector2d excludeFaceCoordinate(Vector3d vector, BlockFace face)
	{
		if(!isCardinal(face))
			throw new IllegalArgumentException("Cannot exclude coordinate from non-cardinal BlockFace");
		
		if(face.getModX() != 0)
			return new Vector2d(vector.y(), vector.z());
		if(face.getModY() != 0)
			return new Vector2d(vector.x(), vector.z());
		if(face.getModZ() != 0)
			return new Vector2d(vector.x(), vector.y());
		throw new IllegalStateException("Unexpected BlockFace coordinates. ("+face+")");
		
//		List<Float> values = vector.getGetters().stream().map(Supplier::get).collect(Collectors.toList());
//		values.remove(getAxisIndex(face));
//		return Vector2f.create(values.get(0), values.get(1));
	}
 
Example 12
Project: SparseBukkitAPI   File: BukkitUtils.java   Source Code and License 6 votes vote down vote up
public static Vector3d mergeFaceCoordinate(Vector2d excluded, double extracted, BlockFace face)
	{
		if(!isCardinal(face))
			throw new IllegalArgumentException("Cannot merge coordinates from non-cardinal BlockFace");
		if(face.getModX() != 0)
			return new Vector3d(extracted, excluded.x(), excluded.y());
		if(face.getModY() != 0)
			return new Vector3d(excluded.x(), extracted, excluded.y());
		if(face.getModZ() != 0)
			return new Vector3d(excluded.x(), excluded.y(), extracted);
		throw new IllegalStateException("Unexpected BlockFace coordinates. ("+face+")");
//		List<Float> values = new ArrayList<>(Arrays.asList(excluded.getX(), excluded.getY()));
//		int axis = getAxisIndex(face);
//		values.add(axis, extracted);
//		return Vector3f.create(values.get(0), values.get(1), values.get(2));
	}
 
Example 13
Project: ProjectAres   File: LaneMatchModule.java   Source Code and License 6 votes vote down vote up
private static boolean isIllegallyOutsideLane(Region lane, Location loc) {
    Block feet = loc.getBlock();
    if(feet == null) return false;

    if(isIllegalBlock(lane, feet)) {
        return true;
    }

    Block head = feet.getRelative(BlockFace.UP);
    if(head == null) return false;

    if(isIllegalBlock(lane, head)) {
        return true;
    }

    return false;
}
 
Example 14
Project: ProjectAres   File: Flag.java   Source Code and License 6 votes vote down vote up
public boolean canDropAt(Location location) {
    if(!match.getWorld().equals(location.getWorld())) return false;

    Block block = location.getBlock();
    Block below = block.getRelative(BlockFace.DOWN);
    if(!canDropOn(below.getState())) return false;
    if(block.getRelative(BlockFace.UP).getType() != Material.AIR) return false;

    switch(block.getType()) {
        case AIR:
        case LONG_GRASS:
            return true;
        default:
            return false;
    }
}
 
Example 15
Project: Kineticraft   File: Dungeons.java   Source Code and License 6 votes vote down vote up
@EventHandler(ignoreCancelled = true) // Handles special items entering hoppers.
public void onHopperPickup(InventoryPickupItemEvent evt) {
    if (!(evt.getInventory().getHolder() instanceof Hopper))
        return; // Verify the inventory the item is going to enter is a hopper.

    Hopper hp = (Hopper) evt.getInventory().getHolder();
    Matcher mName = Pattern.compile("<Custom ID: (\\w+)>").matcher(hp.getInventory().getName());
    if (!mName.find())
        return; // If it doesn't have a Custom item ID defined, don't handle it.

    ItemWrapper iw = ItemManager.constructItem(evt.getItem().getItemStack());
    evt.setCancelled(true);

    if (mName.group(1).equalsIgnoreCase(iw.getTagString("id"))) { // We've found the right item! Consume it.
        evt.getItem().remove();
        hp.getBlock().getRelative(BlockFace.DOWN).setType(Material.REDSTONE_BLOCK);
    } else { // This item isn't acceptable, spit it back out.
        evt.getItem().setVelocity(new Vector(0, .15F, 0));
    }
}
 
Example 16
Project: ProjectAres   File: FallingBlocksMatchModule.java   Source Code and License 6 votes vote down vote up
/**
 * Return the number of unsupported blocks connected to any blocks neighboring the given location,
 * which is assumed to contain an air block. The search may bail out early when the count is greater
 * or equal to the given limit, though this cannot be guaranteed.
 */
private int countUnsupportedNeighbors(long pos, int limit) {
    TLongSet supported = new TLongHashSet();
    TLongSet unsupported = new TLongHashSet();

    try {
        for(BlockFace face : NEIGHBORS) {
            if(!this.isSupported(neighborPos(pos, face), supported, unsupported)) {
                if(unsupported.size() >= limit) break;
            }
        }
    }
    catch(MaxSearchVisitsExceeded ex) {
        this.logError(ex);
    }

    return unsupported.size();
}
 
Example 17
Project: ProjectAres   File: BlockTransformListener.java   Source Code and License 6 votes vote down vote up
@EventWrapper
public void onBlockBurn(final BlockBurnEvent event) {
    Match match = PGM.getMatchManager().getMatch(event.getBlock().getWorld());
    if(match == null) return;

    BlockState oldState = event.getBlock().getState();
    BlockState newState = BlockStateUtils.toAir(oldState);
    MatchPlayerState igniterState = null;

    for(BlockFace face : NEIGHBORS) {
        Block neighbor = oldState.getBlock().getRelative(face);
        if(neighbor.getType() == Material.FIRE) {
            igniterState = blockResolver.getOwner(neighbor);
            if(igniterState != null) break;
        }
    }

    this.callEvent(event, oldState, newState, igniterState);
}
 
Example 18
Project: DynamicAC   File: BackendChecks.java   Source Code and License 6 votes vote down vote up
public void checkAscension(Player player, double y1, double y2) {
    int max = MagicNumbers.ASCENSION_COUNT_MAX;
    if(player.hasPotionEffect(PotionEffectType.JUMP)) {
        max += 12;
    }
    Block block = player.getLocation().getBlock();
    if(!isMovingExempt(player) && !Utilities.isInWater(player) && !player.isFlying() && !Utilities
            .isClimbableBlock(player.getLocation().getBlock()) && !player.isInsideVehicle() && !MOVE_UP_BLOCKS
            .contains(player.getLocation().add(0,-1,0).getBlock().getType()) && !MOVE_UP_BLOCKS.contains(player
            .getLocation().add(0,-1.5,0).getBlock().getType())) {
        if(y1 < y2) {
            if(!block.getRelative(BlockFace.NORTH).isLiquid() && !block.getRelative(BlockFace.SOUTH).isLiquid() && !block.getRelative(BlockFace.EAST).isLiquid() && !block.getRelative(BlockFace.WEST).isLiquid()) {
                incrementOld(player,ascensionCount,max);
                if(ascensionCount.get(player) > max) {
                    for(Player pla : DynamicAC.instance.onlinestaff) {
                        pla.sendMessage(DynamicAC.prefix + player.getName() + " ascended Y Axis too fast!");
                    }
                    DACManager.getUserManager().incrementUser(DACManager.getUserManager().getUser(player.getName
                            ()),"Climbed too fast");
                }
            }
        }
    }
}
 
Example 19
Project: NavyCraft2-Lite   File: OneCannon.java   Source Code and License 6 votes vote down vote up
public void loadingTorp(final boolean left, final Block b, final BlockFace torpHeading, final boolean lift) {
new Thread() {
    @Override
    public void run()
    {
    	
	setPriority(Thread.MIN_PRIORITY);
		try
		{ 
			
sleep(1000);
for( int i=0; i<16; i++ )
{
	loadingTorpUpdate(left, b, torpHeading, lift, i);
	sleep(1000);
}

		} catch (InterruptedException e) 
		{
		}
    }
}.start();
   }
 
Example 20
Project: PA   File: IronElevators.java   Source Code and License 6 votes vote down vote up
@EventHandler(priority = EventPriority.HIGH)
public void upElevator(PlayerMoveEvent e) {
    Player p = e.getPlayer();
    Block b = e.getTo().getBlock().getRelative(BlockFace.DOWN);
    if (e.getFrom().getY() < e.getTo().getY() && b.getType() == elevatorMaterial) { b = b.getRelative(BlockFace.UP, minElevation);
        int i = maxElevation;
        while (i > 0 && !(b.getType() == elevatorMaterial && b.getRelative(BlockFace.UP).getType().isTransparent() && b.getRelative(BlockFace.UP, 2).getType().isTransparent())) {
            i--;
            b = b.getRelative(BlockFace.UP);
        }
        if (i > 0) {
            Location l = p.getLocation();
            l.setY(l.getY() + maxElevation + 3 - i);
            p.teleport(l);
            p.getWorld().playSound(p.getLocation(), Sound.ENTITY_IRONGOLEM_ATTACK, 1, 1);
        }
    }
}
 
Example 21
Project: SurvivalPlus   File: Chairs.java   Source Code and License 6 votes vote down vote up
private boolean checkSign(Block block, BlockFace face)
{
	// Go through the blocks next to the clicked block and check if are signs on the end.
	for(int i = 1; true; i++)
	{
		Block relative = block.getRelative(face, i);
		if(!(Survival.allowedBlocks.contains(relative.getType())) || (block instanceof Stairs && ((Stairs)relative.getState().getData()).getDescendingDirection() != ((Stairs)block.getState().getData()).getDescendingDirection()))
		{
			switch(relative.getType())
			{
				case SIGN:
				case WALL_SIGN:
				case SIGN_POST:
				case ITEM_FRAME:
				case PAINTING:
				case TRAP_DOOR:
				case IRON_TRAPDOOR:
					return true;
				default:
					return false;
			}
		}
	}
}
 
Example 22
Project: MinecraftMarket-Plugin   File: SignsListener.java   Source Code and License 6 votes vote down vote up
@EventHandler
public void onBlockBreakEvent(BlockBreakEvent e) {
    if (plugin.getMainConfig().isUseSigns()) {
        if (e.getPlayer().hasPermission("minecraftmarket.signs")) {
            if (plugin.getSignsConfig().getDonorSignFor(e.getBlock()) != null) {
                if (plugin.getSignsConfig().removeDonorSign(e.getBlock())) {
                    e.getPlayer().sendMessage(Colors.color(I18n.tl("prefix") + " " + I18n.tl("sign_removed")));
                    plugin.getSignsTask().updateSigns();
                }
            } else {
                for (BlockFace blockFace : blockFaces) {
                    Block block = e.getBlock().getRelative(blockFace);
                    if (block != null && block.getState() instanceof Sign && Objects.equals(getAttachedBlock(block), e.getBlock())) {
                        if (plugin.getSignsConfig().getDonorSignFor(block) != null) {
                            if (plugin.getSignsConfig().removeDonorSign(block)) {
                                e.getPlayer().sendMessage(Colors.color(I18n.tl("prefix") + " " + I18n.tl("sign_removed")));
                                plugin.getSignsTask().updateSigns();
                            }
                        }
                    }
                }
            }
        }
    }
}
 
Example 23
Project: Hub   File: ParkourBackend.java   Source Code and License 6 votes vote down vote up
private void startCheckingTask(Hub hub, Parkour parkour)
{
    this.checkingTask = hub.getServer().getScheduler().runTaskTimerAsynchronously(hub, () ->
    {
        for (UUID uuid : parkour.getPlayersIn().keySet())
        {
            Player player = hub.getServer().getPlayer(uuid);

            if (player == null || !player.isOnline())
            {
                parkour.removePlayer(player);
            }
            else
            {
                Block block = player.getLocation().getBlock().getRelative(BlockFace.DOWN);

                if (parkour instanceof WhitelistBasedParkour && !((WhitelistBasedParkour) parkour).isWhitelisted(block.getType()) && block.getType().isSolid())
                    parkour.failPlayer(player);
            }
        }
    }, 20L, 20L);
}
 
Example 24
Project: VoxelGamesLibv2   File: DirectionUtil.java   Source Code and License 5 votes vote down vote up
/**
 * Gets the horizontal BlockFace from a given yaw angle
 *
 * @param yaw                      angle
 * @param useSubCardinalDirections setting, True to allow NORTH_WEST to be returned
 * @return The direction of the angle
 */
@Nonnull
public static BlockFace yawToDirection(float yaw, boolean useSubCardinalDirections) {
    if (useSubCardinalDirections) {
        return RADIAL[(Math.round((yaw - 90) / 45f) & 0x7)];
    } else {
        return AXIS[Math.round(yaw / 90f) & 0x3];
    }
}
 
Example 25
Project: SurvivalAPI   File: SurvivalTeamSelector.java   Source Code and License 5 votes vote down vote up
/**
 * Event fired when a player rename his team
 *
 * @param event Event
 */
@EventHandler
public void onSignChange(SignChangeEvent event)
{
    if (this.game.getStatus().equals(Status.IN_GAME))
    {
        event.getHandlers().unregister(this);
        return;
    }

    if (!this.game.getStatus().equals(Status.IN_GAME))
    {
        SurvivalTeam team = this.game.getPlayerTeam(event.getPlayer().getUniqueId());
        String name = event.getLine(0);
        name = name.trim();

        if (!name.isEmpty())
        {
            team.setTeamName(name);
            event.getPlayer().sendMessage(this.game.getCoherenceMachine().getGameTag() + " " + ChatColor.GREEN + "Le nom de votre équipe est désormais : " + team.getChatColor() + team.getTeamName());
            this.openGui(event.getPlayer(), new GuiSelectTeam());
        }
        else
        {
            event.getPlayer().sendMessage(this.game.getCoherenceMachine().getGameTag() + " " + ChatColor.RED + "Le nom de l'équipe ne peut être vide.");
            this.openGui(event.getPlayer(), new GuiSelectTeam());
        }
        this.game.getPlugin().getServer().getScheduler().runTaskLater(this.game.getPlugin(), () ->
        {
            event.getBlock().setType(Material.AIR);
            event.getBlock().getRelative(BlockFace.DOWN).setType(Material.AIR);
        }, 1L);
    }
}
 
Example 26
Project: CropControl   File: CropControlEventHandler.java   Source Code and License 5 votes vote down vote up
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true)
public void onEntityChangeBlock(EntityChangeBlockEvent e) {
	Block block = e.getBlock();
	if (maybeSideTracked(block)) {
		trySideBreak(block, BreakType.NATURAL, null);
	}
	if (maybeBelowTracked(block)) {
		block = block.getRelative(BlockFace.UP);
	}
	Location loc = block.getLocation();
	if (!pendingChecks.contains(loc)) {
		pendingChecks.add(loc);
		handleBreak(block, BreakType.NATURAL, null, null);
	}
}
 
Example 27
Project: PA   File: GameEvents.java   Source Code and License 5 votes vote down vote up
@EventHandler
public void onInteract(PlayerInteractEvent e) {
    final TOAUser u = TOA.getPlayer(e.getPlayer());

    if (e.getItem() != null) {
        Material m = e.getItem().getType();
        if (m == Material.WRITTEN_BOOK || m == Material.BOW || m == Material.SHEARS || m == Material.DIAMOND_SWORD) return;
        Ability.useAbility(u, e.getItem().getType());
        e.setCancelled(true);
    }

    if (!u.isOnRank(PACmd.Grupo.Builder)) {
        if (e.getClickedBlock() != null) {
            if (e.getClickedBlock().getType().equals(Material.TRAP_DOOR) || e.getClickedBlock().getType().equals(Material.IRON_TRAPDOOR)
                    || e.getClickedBlock().getType().equals(Material.FENCE_GATE) || e.getClickedBlock().getType().equals(Material.FIRE)
                    || e.getClickedBlock().getType().equals(Material.CAULDRON) || e.getClickedBlock().getRelative(BlockFace.UP).getType().equals(Material.FIRE)
                    || e.getClickedBlock().getType() == Material.CHEST || e.getClickedBlock().getType() == Material.TRAPPED_CHEST
                    || e.getClickedBlock().getType() == Material.DROPPER || e.getClickedBlock().getType() == Material.DISPENSER
                    || e.getClickedBlock().getType() == Material.BED_BLOCK || e.getClickedBlock().getType() == Material.BED
                    || e.getClickedBlock().getType() == Material.WORKBENCH || e.getClickedBlock().getType() == Material.BREWING_STAND
                    || e.getClickedBlock().getType() == Material.ANVIL || e.getClickedBlock().getType() == Material.DARK_OAK_FENCE_GATE
                    || e.getClickedBlock().getType() == Material.SPRUCE_FENCE_GATE || e.getClickedBlock().getType() == Material.FURNACE
                    || e.getClickedBlock().getType() == Material.BURNING_FURNACE || e.getClickedBlock().getType() == Material.HOPPER
                    || e.getClickedBlock().getType() == Material.STONE_BUTTON || e.getClickedBlock().getType() == Material.WOOD_BUTTON) {
                e.setCancelled(true);
            }
        }
    }
}
 
Example 28
Project: Uranium   File: CraftItemFrame.java   Source Code and License 5 votes vote down vote up
public boolean setFacingDirection(BlockFace face, boolean force) {
    if (!super.setFacingDirection(face, force)) {
        return false;
    }

    net.minecraft.world.WorldServer world = ((CraftWorld) this.getWorld()).getHandle();
    world.getEntityTracker().removeEntityFromAllTrackingPlayers(this.getHandle());
    world.getEntityTracker().addEntityToTracker(this.getHandle());
    return true;
}
 
Example 29
Project: MT_Core   File: GeckPowerListener.java   Source Code and License 5 votes vote down vote up
@EventHandler
public void onPlayerLeaverInteract(PlayerInteractEvent e) {
	Player p = e.getPlayer();
	Block clicked = e.getClickedBlock();

	if (clicked == null)
		return;

	Block underneath = clicked.getRelative(BlockFace.DOWN);
	Location underneathLoc = underneath.getLocation();

	if (e.getAction() != Action.RIGHT_CLICK_BLOCK || e.getHand() == EquipmentSlot.OFF_HAND)
		return;

	if (clicked.getType() != Material.LEVER || underneath == null)
		return;

	String chunk = clicked.getLocation().getChunk().getX() + ";" + clicked.getLocation().getChunk().getZ();

	if (underneath.getType() == Material.SPONGE && !underneath.isBlockPowered()) {
		if (!main.getGeckManager().isGeckBuildCorrect(underneath)) {
			p.sendMessage(ChatColor.RED + "You must build the GECK correctly!");

			// Check if the geck is inside the powerables list
		} else if (main.getGenListener().getPowerable().get(clicked.getWorld().getName()).getList(chunk)
				.contains(underneathLoc)) {
			main.getGeckObjectManager().addGeckLocation(underneathLoc);
			main.getGeckObjectManager().getGeckObject(underneathLoc).setCorrect(true);
			main.getGeckObjectManager().getGeckObject(underneathLoc).setPowered(true);
			p.sendMessage(ChatColor.GREEN + "GECK Enabled!");
			return;
		}

	} else if (main.getGeckObjectManager().getGeckObject(underneathLoc) != null && underneath.isBlockPowered()) {
		main.getGeckObjectManager().getGeckObject(underneathLoc).setPowered(false);
		main.getGeckObjectManager().removeGeckLocation(underneathLoc);
		p.sendMessage(ChatColor.RED + "GECK Disabled!");
	}
}
 
Example 30
Project: Uranium   File: CraftHanging.java   Source Code and License 5 votes vote down vote up
public boolean setFacingDirection(BlockFace face, boolean force) {
    Block block = getLocation().getBlock().getRelative(getAttachedFace()).getRelative(face.getOppositeFace()).getRelative(getFacing());
    net.minecraft.entity.EntityHanging hanging = getHandle();
    int x = hanging.field_146063_b, y = hanging.field_146064_c, z = hanging.field_146062_d, dir = hanging.hangingDirection;
    hanging.field_146063_b = block.getX();
    hanging.field_146064_c = block.getY();
    hanging.field_146062_d = block.getZ();
    switch (face) {
        case SOUTH:
        default:
            getHandle().setDirection(0);
            break;
        case WEST:
            getHandle().setDirection(1);
            break;
        case NORTH:
            getHandle().setDirection(2);
            break;
        case EAST:
            getHandle().setDirection(3);
            break;
    }
    if (!force && !hanging.onValidSurface()) {
        // Revert since it doesn't fit
        hanging.field_146063_b = x;
        hanging.field_146064_c = y;
        hanging.field_146062_d = z;
        hanging.setDirection(dir);
        return false;
    }
    return true;
}
 
Example 31
Project: Uranium   File: CraftBlock.java   Source Code and License 5 votes vote down vote up
public BlockFace getFace(final Block block) {
    BlockFace[] values = BlockFace.values();

    for (BlockFace face : values) {
        if ((this.getX() + face.getModX() == block.getX()) &&
            (this.getY() + face.getModY() == block.getY()) &&
            (this.getZ() + face.getModZ() == block.getZ())
        ) {
            return face;
        }
    }

    return null;
}
 
Example 32
Project: NavyCraft2-Lite   File: OneCannon.java   Source Code and License 5 votes vote down vote up
public void fireShell(Vector look, Player p)
{
	tntp.setVelocity(look);
	if( cannonType == 1 )
 {
		
 	tntp2.setVelocity(look);
 }
 if( cannonType == 6 )
 {
 	tntp2.setVelocity(look);
 	tntp3.setVelocity(look);
 }
 charged = 0;
 
 Block b;
 b = loc.getBlock().getRelative(BlockFace.UP);
 b.getWorld().createExplosion(loc.getBlock().getRelative(direction,4).getLocation(), 0);
 
 if( cannonType == 6 )
 {
 	if( direction == BlockFace.EAST || direction == BlockFace.WEST )
 	{
 		b.getWorld().createExplosion(loc.getBlock().getRelative(direction,4).getRelative(BlockFace.NORTH,2).getLocation(), 0);
 		b.getWorld().createExplosion(loc.getBlock().getRelative(direction,4).getRelative(BlockFace.SOUTH,2).getLocation(), 0);
 	}else
 	{
 		b.getWorld().createExplosion(loc.getBlock().getRelative(direction,4).getRelative(BlockFace.EAST,2).getLocation(), 0);
 		b.getWorld().createExplosion(loc.getBlock().getRelative(direction,4).getRelative(BlockFace.WEST,2).getLocation(), 0);
 	}
 }
}
 
Example 33
Project: Uranium   File: CraftBlock.java   Source Code and License 5 votes vote down vote up
public boolean isBlockFaceIndirectlyPowered(BlockFace face) {
    int power = chunk.getHandle().worldObj.getIndirectPowerLevelTo(x, y, z, blockFaceToNotch(face));

    Block relative = getRelative(face);
    if (relative.getType() == Material.REDSTONE_WIRE) {
        return Math.max(power, relative.getData()) > 0;
    }

    return power > 0;
}
 
Example 34
Project: mczone   File: GameEvents.java   Source Code and License 5 votes vote down vote up
@EventHandler(ignoreCancelled = true)
  public void onPlayerMove(PlayerMoveEvent event) {
Player p = event.getPlayer();
      Location to = event.getTo();
      Location from = event.getFrom();
      World world = to.getWorld();

      if (to.clone().add(0, -1, 0).getBlock().getType() != Material.REDSTONE_LAMP_ON)
      	return;
      
      if (from.clone().add(0, -1, 0).getBlock().getType() == Material.REDSTONE_LAMP_ON)
      	return;
      
      for (Block block : getPortalNear(world, to.getBlockX(), to.getBlockY(), to.getBlockZ())) {
          for (BlockFace bf : BlockFace.values()) {
              Block relative = block.getRelative(bf);
              if (relative.getTypeId() == SIGN) {
              	
              	// Specific server
              	Sign sign = (Sign) relative.getState();
              	Portal portal = null;
              	for (Portal po : Portal.getList()) {
              		if (WorldUtil.sameBlock(po.getSign().getBlock(), sign.getBlock())) {
              			portal = po;
              			break;
              		}
              	}
              	if (portal == null)
              		return;	
              	
              	if (portal.getCurrent().getStatus() == Status.CLOSED)
              		Chat.player(p, "&cThat server is currently unavailable!");
              	else                	
              		portal.getCurrent().connect(event.getPlayer());
              	
              	portal.updateSign();
              }
          }
      }
  }
 
Example 35
Project: VoxelGamesLibv2   File: JumpPadFeature.java   Source Code and License 5 votes vote down vote up
@GameEvent
public void onStep(@Nonnull PlayerInteractEvent event) {
    if (event.getAction() == Action.PHYSICAL) {
        if (event.getClickedBlock().getType() != Material.WOOD_PLATE && event.getClickedBlock().getType() != Material.STONE_PLATE) {
            return;
        }
        if (event.isCancelled()) {
            return;
        }
        double strength = 1.5;
        double up = 1;
        if (event.getClickedBlock().getRelative(BlockFace.DOWN, 2).getState() instanceof Sign) {
            Sign sign = (Sign) event.getClickedBlock().getRelative(BlockFace.DOWN, 2).getState();
            if (sign.getLine(0).contains("[Boom]")) {
                try {
                    strength = Double.parseDouble(sign.getLine(1));
                    up = Double.parseDouble(sign.getLine(2));
                } catch (final Exception ex) {
                    log.warning("Invalid boom sign at " + sign.getLocation());
                }
            }
        }

        event.getPlayer().playSound(event.getPlayer().getLocation(), Sound.ENTITY_ENDERDRAGON_SHOOT, 10.0F, 1.0F);
        event.getPlayer().playEffect(event.getPlayer().getLocation(), Effect.SMOKE, 10);
        Vector v = event.getPlayer().getLocation().getDirection().multiply(strength / 2).setY(up / 2);
        event.getPlayer().setVelocity(v);
        event.setCancelled(true);
    }
}
 
Example 36
Project: Uranium   File: CraftSkull.java   Source Code and License 5 votes vote down vote up
static BlockFace getBlockFace(byte rotation) {
    switch (rotation) {
        case 0:
            return BlockFace.NORTH;
        case 1:
            return BlockFace.NORTH_NORTH_EAST;
        case 2:
            return BlockFace.NORTH_EAST;
        case 3:
            return BlockFace.EAST_NORTH_EAST;
        case 4:
            return BlockFace.EAST;
        case 5:
            return BlockFace.EAST_SOUTH_EAST;
        case 6:
            return BlockFace.SOUTH_EAST;
        case 7:
            return BlockFace.SOUTH_SOUTH_EAST;
        case 8:
            return BlockFace.SOUTH;
        case 9:
            return BlockFace.SOUTH_SOUTH_WEST;
        case 10:
            return BlockFace.SOUTH_WEST;
        case 11:
            return BlockFace.WEST_SOUTH_WEST;
        case 12:
            return BlockFace.WEST;
        case 13:
            return BlockFace.WEST_NORTH_WEST;
        case 14:
            return BlockFace.NORTH_WEST;
        case 15:
            return BlockFace.NORTH_NORTH_WEST;
        default:
            throw new AssertionError(rotation);
    }
}
 
Example 37
Project: NavyCraft2-Lite   File: OneCannon.java   Source Code and License 5 votes vote down vote up
public Block getDirectionFromRelative(Block blockIn, BlockFace dir, boolean left)
{
	Block b;
	if( dir == BlockFace.NORTH )	
	{
		if( left )
			b = blockIn.getRelative(BlockFace.WEST);
		else
			b = blockIn.getRelative(BlockFace.EAST);
	}else if( dir == BlockFace.SOUTH )
	{
		if( left )
			b = blockIn.getRelative(BlockFace.EAST);
		else
			b = blockIn.getRelative(BlockFace.WEST);
	}else if( dir == BlockFace.EAST )
	{
		if( left )
			b = blockIn.getRelative(BlockFace.NORTH);
		else
			b = blockIn.getRelative(BlockFace.SOUTH);
	}else //if( direction == BlockFace.WEST )
	{
		if( left )
			b = blockIn.getRelative(BlockFace.SOUTH);
		else
			b = blockIn.getRelative(BlockFace.NORTH);
	}
	return b;
}
 
Example 38
Project: ZentrelaRPG   File: SchematicManager.java   Source Code and License 5 votes vote down vote up
public static void grow(Player p, int radius) {
    Block target = p.getTargetBlock((HashSet<Byte>) null, 100);
    int radius_squared = radius * radius;
    Block toHandle;
    SchematicUserConfig cfg = getConfig(p);
    ArrayList<Block> list = new ArrayList<Block>();
    for (int x = -radius; x <= radius; x++) {
        for (int z = -radius; z <= radius; z++) {
            toHandle = target.getWorld().getHighestBlockAt(target.getX() + x, target.getZ() + z);
            if (toHandle.getType() == Material.AIR && toHandle.getRelative(BlockFace.DOWN).getType() == Material.GRASS) { // Block beneath is grass
                if (target.getLocation().distanceSquared(toHandle.getLocation()) <= radius_squared) { // Block is in radius
                    double rand = Math.random();
                    if (rand < cfg.growDensity * 5 / 6) {
                        toHandle.setType(Material.LONG_GRASS);
                        toHandle.setData((byte) 1);
                        list.add(toHandle);
                    } else if (rand < cfg.growDensity) {
                        toHandle.setType(Material.RED_ROSE); //0 4 5 6 7 8
                        byte data = (byte) (Math.random() * 6);
                        if (data > 0)
                            data += 3; //1 + 3 = 4, 2 + 3 = 5, ..., 5 + 3 = 8
                        toHandle.setData(data);
                        list.add(toHandle);
                    }
                }
            }
        }
    }
    cfg.lastGrow.add(list);
    if (SchematicManager.getConfig(p).verbose)
        p.sendMessage("Grew with radius " + radius + ".");
}
 
Example 39
Project: NeverLag   File: AntiQuickShopDoubleChest.java   Source Code and License 5 votes vote down vote up
private static Block getBlockNearby(Block b, Material type) {
	Block relativeBlock;
	for (BlockFace face : BLOCKFACE) {
		relativeBlock = b.getRelative(face);
		if (relativeBlock != null && type == relativeBlock.getType()) {
			return relativeBlock;
		}
	}
	return null;
}
 
Example 40
Project: Arcadia-Spigot   File: ElectricFloorGame.java   Source Code and License 5 votes vote down vote up
private void updateBlock(Player player, Block block) {
    if(this.getAPI().getGameManager().isAlive(player)) {
        if(block.getType() == Material.AIR
                && block.getRelative(BlockFace.DOWN).getType() != Material.AIR) {
            block = block.getRelative(BlockFace.DOWN);
        }
        MaterialData currentData = floorOrder.currentData(block);
        if(floorOrder.match(block, floorOrder.last())) {
            this.getAPI().getGameManager().setAlive(player, false);
        } else {
            if(floorOrder.contains(block)) {
                if(!changePending.contains(block)) {
                    final Block finalBlock = block;
                    final MaterialData next = floorOrder.nextData(block);
                    changePending.add(block);
                    new BukkitRunnable() {
                        public void run() {
                            if(changePending.contains(finalBlock)) {
                                finalBlock.setTypeIdAndData(next.getItemTypeId(), next.getData(), false);
                                changePending.remove(finalBlock);
                            }
                        }
                    }.runTaskLater(this.getAPI().getPlugin(), 10L);
                }
            }
        }
    }
}