Java 类org.bukkit.material.Sign 实例源码

项目:sensibletoolbox    文件:GeneralListener.java   
@EventHandler(ignoreCancelled = true)
public void onSignChange(SignChangeEvent event) {
    final Block b = event.getBlock();
    Sign sign = (Sign) b.getState().getData();
    Block attachedTo = b.getRelative(sign.getAttachedFace());
    BaseSTBBlock item = LocationManager.getManager().get(attachedTo.getLocation());
    if (item != null) {
        boolean ret = item.onSignChange(event);
        if (ret) {
            // pop the sign off next tick; it's done its job
            Bukkit.getScheduler().runTask(plugin, new Runnable() {
                @Override
                public void run() {
                    b.setType(Material.AIR);
                    b.getWorld().dropItemNaturally(b.getLocation(), new ItemStack(Material.SIGN));
                }
            });
        }
    }
}
项目:xEssentials-deprecated-bukkit    文件:DispenseSignEvent.java   
@EventHandler
public void onCreate(SignChangeEvent e) {
    if(e.getLine(0).equalsIgnoreCase("[dispense]") || e.getLine(0).equalsIgnoreCase("[dispenser]")) {
        if(e.getPlayer().hasPermission(PermissionKey.SIGN_DISPENSER_CREATE.getPermission())) {

            Sign sign = (Sign) e.getBlock().getState().getData();

            if(e.getBlock().getRelative(sign.getAttachedFace()).getType() == Material.DISPENSER) {
                e.setLine(0, ChatColor.BLUE + "[Dispense]");
                sendMessage(e.getPlayer(), ChatColor.GREEN + "you successfully placed a dispense sign!");   
            } else {
                sendMessage(e.getPlayer(), ChatColor.RED + "your sign has to be attached to a dispenser!");
                e.setCancelled(true);
            }
        } else {
            sendMessage(e.getPlayer(), ChatColor.RED + "you are not allowed to make dispense signs!");
            e.setCancelled(true);
        }
    }
}
项目:xEssentials-deprecated-bukkit    文件:DispenseSignEvent.java   
@EventHandler
public void onPower(BlockDispenseEvent e) {
        if(e.getBlock().getType() == Material.DISPENSER) {
            if(hasNearbySign(e.getBlock())) {
                org.bukkit.block.Sign sign = getSign(e.getBlock());
                if(sign.getLine(0).equalsIgnoreCase(ChatColor.BLUE + "[Dispense]")) {
                    Dispenser disp = (Dispenser) e.getBlock().getState();
                    for(ItemStack stack : disp.getInventory().getContents()) {
                        if(stack != null) {
                            ItemStack clone = stack.clone();
                            clone.setAmount(64);
                            disp.getInventory().addItem(clone);
                        }
                    }
                }
            }
        }
}
项目:MagicArenas    文件:Arena.java   
public boolean placeLeaderboard(Block leaderboardBlock) {
    if (leaderboardBlock.getType() != Material.WALL_SIGN) {
        return false;
    }
    MaterialData signData = leaderboardBlock.getState().getData();
    if (!(signData instanceof Sign)) {
        controller.getPlugin().getLogger().warning("Block at " + leaderboardBlock.getLocation() + " has no sign data! " + signData.getClass());
        return false;
    }
    Sign sign = (Sign)signData;
    BlockFace signDirection = sign.getFacing();
    BlockFace rightDirection = goLeft(signDirection);
    Block checkBlock = leaderboardBlock;
    for (int y = 0; y <= leaderboardSize; y++) {
        Block neighborBlock = checkBlock.getRelative(rightDirection);
        if (!canReplace(neighborBlock)) {
            return false;
        }
        if (y != 0 && !canReplace(checkBlock)) {
            return false;
        }
        checkBlock = checkBlock.getRelative(BlockFace.UP);
    }

    removeLeaderboard();
    leaderboardLocation = leaderboardBlock.getLocation();
    leaderboardFacing = signDirection;
    updateLeaderboard();

    return true;
}
项目:SavageDeathChest    文件:BlockEventListener.java   
/**
 * Block physics event handler<br>
 * remove detached death chest signs from game to prevent players gaining additional signs
 * @param event
 */
@EventHandler
public void signDetachCheck(BlockPhysicsEvent event) {

    Block block = event.getBlock();

    // if event is cancelled, do nothing and return
    if (event.isCancelled()) {
        return;
    }

    // if block is not a DeathChestBlock, do nothing and return
    if (!DeathChestBlock.isDeathChestBlock(block)) {
        return;
    }

    // if block is not a sign, do nothing and return
    if (block.getType() != Material.WALL_SIGN && block.getType() != Material.SIGN_POST) {
        return;
    }

    Sign sign = (Sign)block.getState().getData();
    Block attached_block = block.getRelative(sign.getAttachedFace());

    // if attached block is still there, do nothing and return
    if (attached_block.getType() != Material.AIR) {
        return;
    }

    // cancel event
    event.setCancelled(true);

    // destroy DeathChestBlock
    plugin.chestManager.destroyDeathChestBlock(block);
}
项目:SavageDeathChest    文件:DeathChestBlock.java   
public static void openInventory(Player player, Block block) {

    // if block is null or not a death chest block, do nothing and return
    if (block == null || ! isDeathChestBlock(block)) {
        return;
    }

    // if block is wall sign, set block to attached block
    if (block.getType().equals(Material.WALL_SIGN)) {
        Sign sign = (Sign)block.getState().getData();
        block = block.getRelative(sign.getAttachedFace());
    }
    // if block is sign post, set block to one block below
    else if (block.getType().equals(Material.SIGN_POST)) {
        block = block.getRelative(0, 1, 0);
    }

    // confirm block is a death chest
    if (! block.getType().equals(Material.CHEST) || ! DeathChestBlock.isDeathChestBlock(block)) {
        return;
    }

    // open chest inventory
    BlockState state = block.getState();
    Chest chest = (Chest)state;
    Inventory inventory = chest.getInventory();
    player.openInventory(inventory);
}
项目:sensibletoolbox    文件:GeneralListener.java   
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR)
public void onLabelSignBroken(BlockBreakEvent event) {
    if (event.getBlock().getType() == Material.WALL_SIGN) {
        Sign sign = (Sign) event.getBlock().getState().getData();
        Block b2 = event.getBlock().getRelative(sign.getAttachedFace());
        BaseSTBBlock stb = LocationManager.getManager().get(b2.getLocation());
        if (stb != null) {
            stb.detachLabelSign(sign.getAttachedFace().getOppositeFace());
        }
    }
}
项目:sensibletoolbox    文件:LocationManager.java   
/**
 * Get the STB block at the given location, or if the location contains a
 * sign, possibly at the location the sign is attached to.
 *
 * @param loc the location to check at
 * @param checkSigns if true, and the location contains a sign, check at
 *                   the location that the sign is attached to
 * @return the STB block at the given location, or null if no matching item
 */
public BaseSTBBlock get(Location loc, boolean checkSigns) {
    Block b = loc.getBlock();
    if (checkSigns && (b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST)) {
        Sign sign = (Sign) b.getState().getData();
        b = b.getRelative(sign.getAttachedFace());
    }
    BaseSTBBlock stb = (BaseSTBBlock) STBUtil.getMetadataValue(b, BaseSTBBlock.STB_BLOCK);
    if (stb != null) {
        return stb;
    } else {
        // perhaps it's part of a multi-block structure
        return (BaseSTBBlock) STBUtil.getMetadataValue(b, BaseSTBBlock.STB_MULTI_BLOCK);
    }
}
项目:AreaShop    文件:AddsignCommand.java   
@Override
public void execute(CommandSender sender, String[] args) {
    if(!sender.hasPermission("areashop.addsign")) {
        plugin.message(sender, "addsign-noPermission");
        return;
    }
    if(!(sender instanceof Player)) {
        plugin.message(sender, "cmd-onlyByPlayer");
        return;
    }
    Player player = (Player)sender;

    // Get the sign
    Block block = null;
    BlockIterator blockIterator = new BlockIterator(player, 100);
    while(blockIterator.hasNext() && block == null) {
        Block next = blockIterator.next();
        if(next.getType() != Material.AIR) {
            block = next;
        }
    }
    if(block == null || !(block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST)) {
        plugin.message(sender, "addsign-noSign");
        return;
    }

    GeneralRegion region;
    if(args.length > 1) {
        // Get region by argument
        region = plugin.getFileManager().getRegion(args[1]);
        if(region == null) {
            plugin.message(sender, "cmd-notRegistered", args[1]);
            return;
        }
    } else {
        // Get region by sign position
        List<GeneralRegion> regions = Utils.getRegionsInSelection(new CuboidSelection(block.getWorld(), block.getLocation(), block.getLocation()));
        if(regions.isEmpty()) {
            plugin.message(sender, "addsign-noRegions");
            return;
        } else if(regions.size() > 1) {
            plugin.message(sender, "addsign-couldNotDetect", regions.get(0).getName(), regions.get(1).getName());
            return;
        }
        region = regions.get(0);
    }
    Sign sign = (Sign)block.getState().getData();
    String profile = null;
    if(args.length > 2) {
        profile = args[2];
        Set<String> profiles = plugin.getConfig().getConfigurationSection("signProfiles").getKeys(false);
        if(!profiles.contains(profile)) {
            plugin.message(sender, "addsign-wrongProfile", Utils.createCommaSeparatedList(profiles), region);
            return;
        }
    }
    RegionSign regionSign = SignsFeature.getSignByLocation(block.getLocation());
    if(regionSign != null) {
        plugin.message(sender, "addsign-alreadyRegistered", regionSign.getRegion());
        return;
    }

    region.getSignsFeature().addSign(block.getLocation(), block.getType(), sign.getFacing(), profile);
    if(profile == null) {
        plugin.message(sender, "addsign-success", region);
    } else {
        plugin.message(sender, "addsign-successProfile", profile, region);
    }
    region.update();
}
项目:BedrockAPI    文件:Sign.java   
public Sign() {
}
项目:BedrockAPI    文件:Sign.java   
@Deprecated public Sign(int type) {
}
项目:BedrockAPI    文件:Sign.java   
public Sign(Material type) {
}
项目:BedrockAPI    文件:Sign.java   
@Deprecated public Sign(int type, byte data) {
}
项目:BedrockAPI    文件:Sign.java   
@Deprecated public Sign(Material type, byte data) {
}
项目:BedrockAPI    文件:Sign.java   
public Sign clone() {
    return null;
}
项目:xEssentials-deprecated-bukkit    文件:SignEditEvent.java   
@EventHandler(priority = EventPriority.LOWEST)
public void onEditSign(SignChangeEvent e) {
    Sign sign = (Sign)e.getBlock().getState().getData();
    Block other = e.getBlock().getRelative(sign.getFacing().getOppositeFace());
    if(other.getType() == Material.WALL_SIGN || other.getType() == Material.SIGN_POST) {
        org.bukkit.block.Sign signn = (org.bukkit.block.Sign)other.getState();
        XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName());
        if(xp.isEditSignEnabled()) {
            if(pl.getConfiguration().getProtectionConfig().isProtectionEnabled()) {
                ProtectedBlock pblock = new ProtectedBlock(pl, e.getBlock());
                if(pblock.isMember(e.getPlayer().getUniqueId())) {
                    signn.setLine(0, e.getLine(0));
                    signn.setLine(1, e.getLine(1));
                    signn.setLine(2, e.getLine(2));
                    signn.setLine(3, e.getLine(3));
                    signn.update(true);
                    sendMessage(e.getPlayer(), ChatColor.GREEN + "successfully edited sign.");
                    pblock.removeProtection(e.getPlayer().getUniqueId());
                    e.getBlock().setType(Material.AIR);
                    Bukkit.getPluginManager().callEvent(new BlockPlaceEvent(signn.getBlock(), signn, signn.getBlock(), new ItemStack(Material.SIGN, 1), e.getPlayer(), true));
                } else {
                    e.getBlock().setType(Material.AIR);
                    e.setCancelled(true);
                    sendMessage(e.getPlayer(), ChatColor.RED + "cannot modify sign, this sign does not belongs to you");
                }
            } else if(Hooks.isLWCEnabled()) {
                if(LWCHook.isOwner(e.getPlayer(), signn.getBlock())) {
                    signn.setLine(0, e.getLine(0));
                    signn.setLine(1, e.getLine(1));
                    signn.setLine(2, e.getLine(2));
                    signn.setLine(3, e.getLine(3));
                    signn.update(true);
                    sendMessage(e.getPlayer(), ChatColor.GREEN + "successfully edited sign.");
                    LWCHook.removeProtection(e.getBlock());
                    e.getBlock().setType(Material.AIR);
                    Bukkit.getPluginManager().callEvent(new BlockPlaceEvent(signn.getBlock(), signn, signn.getBlock(), new ItemStack(Material.SIGN, 1), e.getPlayer(), true));
                } else {
                    e.getBlock().setType(Material.AIR);
                    e.setCancelled(true);
                    sendMessage(e.getPlayer(), ChatColor.RED + "cannot modify sign, this sign does not belongs to you");
                }
            }
        }
    }

}