org.bukkit.block.Sign#getLines ( )源码实例Demo

下面列出了org.bukkit.block.Sign#getLines ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: VoxelGamesLibv2   文件: SignButtons.java
@EventHandler
public void signInteract(@Nonnull PlayerInteractEvent event) {
    if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getClickedBlock() == null) {
        return;
    }
    // is block a sign?
    if (event.getClickedBlock().getState() instanceof Sign) {
        User user = userHandler.getUser(event.getPlayer().getUniqueId()).orElseThrow(() -> new UserException(
                "Unknown user " + event.getPlayer().getDisplayName() + "(" + event.getPlayer().getUniqueId() + ")"));
        Sign sign = (Sign) event.getClickedBlock().getState();
        for (int i = 0; i < sign.getLines().length; i++) {
            String line = sign.getLines()[i];
            for (String key : getButtons().keySet()) {
                if (line.contains("[" + key + "]")) {
                    //TODO implement perm check
                    getButtons().get(key).execute(user, event.getClickedBlock());
                }
            }
        }
    }
}
 
源代码2 项目: RedProtect   文件: Region.java
public void updateSigns(String fname) {
    if (!RedProtect.get().config.configRoot().region_settings.enable_flag_sign) {
        return;
    }
    List<Location> locs = RedProtect.get().config.getSigns(this.getID());
    if (locs.size() > 0) {
        for (Location loc : locs) {
            if (loc.getBlock().getState() instanceof Sign) {
                Sign s = (Sign) loc.getBlock().getState();
                String[] lines = s.getLines();
                if (lines[0].equalsIgnoreCase("[flag]")) {
                    if (lines[1].equalsIgnoreCase(fname) && this.name.equalsIgnoreCase(ChatColor.stripColor(lines[2]))) {
                        s.setLine(3, RedProtect.get().lang.get("region.value") + " " + ChatColor.translateAlternateColorCodes('&', RedProtect.get().lang.translBool(getFlagString(fname))));
                        s.update();
                        RedProtect.get().config.putSign(this.getID(), loc);
                    }
                } else {
                    RedProtect.get().config.removeSign(this.getID(), loc);
                }
            } else {
                RedProtect.get().config.removeSign(this.getID(), loc);
            }
        }
    }
}
 
源代码3 项目: Survival-Games   文件: SignClickEvent.java
@EventHandler(priority = EventPriority.HIGHEST)
public void clickHandler(PlayerInteractEvent e){

    if(!(e.getAction()==Action.RIGHT_CLICK_BLOCK || e.getAction()==Action.LEFT_CLICK_BLOCK)) return;
    

    Block clickedBlock = e.getClickedBlock(); 
    if(!(clickedBlock.getState() instanceof Sign)) return;        
    Sign thisSign = (Sign) clickedBlock.getState();
    //System.out.println("Clicked sign");
    String[] lines = thisSign.getLines();
    if(lines.length<3) return;
    if(lines[0].equalsIgnoreCase("[SurvivalGames]")) {
        e.setCancelled(true);
        try{
            if(lines[2].equalsIgnoreCase("Auto Assign")){
            	if(SettingsManager.getInstance().getConfig().getInt("randomjoin-mode", 1) == 0) {
            		GameManager.getInstance().addPlayerRandomly(e.getPlayer());			
            	}else {
            		GameManager.getInstance().autoAddPlayer(e.getPlayer());						
	}
            }
            else{
                String game = lines[2].replace("Arena ", "");
                int gameno  = Integer.parseInt(game);
                GameManager.getInstance().addPlayer(e.getPlayer(), gameno);
            }

        }catch(Exception ek){}
    }

}
 
源代码4 项目: DungeonsXL   文件: SignData.java
/**
 * Loads all signs from the file to the instance.
 *
 * @param instance the instance where the signs are
 */
public void deserializeSigns(InstanceWorld instance) {
    try {
        ObjectInputStream os = new ObjectInputStream(new FileInputStream(file));

        int length = os.readInt();
        for (int i = 0; i < length; i++) {
            int x = os.readInt();
            int y = os.readInt();
            int z = os.readInt();

            Block block = instance.getWorld().getBlockAt(x, y, z);
            BlockState state = block.getState();
            if (state instanceof Sign) {
                Sign sign = (Sign) state;
                String[] lines = sign.getLines();
                instance.createDungeonSign(sign, lines);

                if (lines[0].equalsIgnoreCase("[lobby]")) {
                    instance.setLobbyLocation(block.getLocation());
                }
            }
        }

        os.close();

    } catch (IOException exception) {
        exception.printStackTrace();
    }
}
 
源代码5 项目: DungeonsXL   文件: DEditWorld.java
@Override
public void registerSign(Block block) {
    if (block.getState() instanceof Sign) {
        Sign sign = (Sign) block.getState();
        String[] lines = sign.getLines();

        if (lines[0].equalsIgnoreCase("[lobby]")) {
            setLobbyLocation(block.getLocation());
        }
    }
}
 
源代码6 项目: DungeonsXL   文件: DEditPlayer.java
public void poke(Block block) {
    if (block.getState() instanceof Sign) {
        Sign sign = (Sign) block.getState();
        String[] lines = sign.getLines();
        if (lines[0].isEmpty() && lines[1].isEmpty() && lines[2].isEmpty() && lines[3].isEmpty()) {
            if (linesCopy != null) {
                SignChangeEvent event = new SignChangeEvent(block, getPlayer(), linesCopy);
                Bukkit.getPluginManager().callEvent(event);
                if (!event.isCancelled()) {
                    sign.setLine(0, event.getLine(0));
                    sign.setLine(1, event.getLine(1));
                    sign.setLine(2, event.getLine(2));
                    sign.setLine(3, event.getLine(3));
                    sign.update();
                }
            }
        } else {
            linesCopy = lines;
            MessageUtil.sendMessage(getPlayer(), DMessage.PLAYER_SIGN_COPIED.getMessage());
        }
    } else {
        String info = "" + block.getType();
        if (block.getData() != 0) {
            info = info + "," + block.getData();
        }
        MessageUtil.sendMessage(getPlayer(), DMessage.PLAYER_BLOCK_INFO.getMessage(info));
    }
}
 
源代码7 项目: civcraft   文件: WarRegen.java
public static String blockSignString(Sign sign) {
	String out = ":";
	
	for (String str : sign.getLines()) {
		out += str+",";
	}
	
	return out;
}
 
源代码8 项目: GriefDefender   文件: SignUpdateTask.java
@Override
public void run() {
    for (World world : Bukkit.getServer().getWorlds()) {
        final GDClaimManager claimManager = GriefDefenderPlugin.getInstance().dataStore.getClaimWorldManager(world.getUID());
        Set<Claim> claimList = claimManager.getWorldClaims();
        if (claimList.size() == 0) {
            continue;
        }

        final Iterator<Claim> iterator = new HashSet<>(claimList).iterator();
        while (iterator.hasNext()) {
            final GDClaim claim = (GDClaim) iterator.next();
            final Vector3i pos = claim.getEconomyData() == null ? null : claim.getEconomyData().getRentSignPosition();
            if (pos == null || claim.getEconomyData() == null || claim.getEconomyData().getRentEndDate() == null) {
                continue;
            }

            final Sign sign = SignUtil.getSign(world, pos);
            if (SignUtil.isRentSign(claim, sign)) {
                final String[] lines = sign.getLines();
                final String header = lines[0];
                if (header == null) {
                    // Should not happen but just in case
                    continue;
                }

                final String timeRemaining = sign.getLine(3);
                final Duration duration = Duration.between(Instant.now(), claim.getEconomyData().getRentEndDate());
                final long seconds = duration.getSeconds();
                if (seconds <= 0) {
                    if (claim.getEconomyData().isRented()) {
                        final UUID renterUniqueId = claim.getEconomyData().getRenters().get(0);
                        final GDPermissionUser renter = PermissionHolderCache.getInstance().getOrCreateUser(renterUniqueId);
                        if (renter != null && renter.getOnlinePlayer() != null) {
                            GriefDefenderPlugin.sendMessage(renter.getOnlinePlayer(), MessageCache.getInstance().ECONOMY_CLAIM_RENT_CANCELLED);
                        }
                    }
                    sign.getBlock().setType(Material.AIR);
                    SignUtil.resetRentData(claim);
                    claim.getData().save();
                    continue;
                }

                final String remainingTime = String.format("%02d:%02d:%02d", duration.toDays(), (seconds % 86400 ) / 3600, (seconds % 3600) / 60);
                sign.setLine(3, ChatColor.translateAlternateColorCodes('&', "&6" + remainingTime));
                sign.update();
            }
        }
    }
}
 
源代码9 项目: QuickShop-Reremake   文件: ContainerShop.java
/**
 * Returns a list of signs that are attached to this shop (QuickShop and blank signs only)
 *
 * @return a list of signs that are attached to this shop (QuickShop and blank signs only)
 */
@Override
public @NotNull List<Sign> getSigns() {
    List<Sign> signs = new ArrayList<>(4);
    if (this.getLocation().getWorld() == null) {
        return signs;
    }
    Block[] blocks = new Block[4];
    blocks[0] = location.getBlock().getRelative(BlockFace.EAST);
    blocks[1] = location.getBlock().getRelative(BlockFace.NORTH);
    blocks[2] = location.getBlock().getRelative(BlockFace.SOUTH);
    blocks[3] = location.getBlock().getRelative(BlockFace.WEST);
    String adminShopHeader =
            MsgUtil.getMessageOfflinePlayer("signs.header", null,MsgUtil.getMessageOfflinePlayer(
                    "admin-shop", Bukkit.getOfflinePlayer(this.getOwner())));
    String signHeaderUsername =
            MsgUtil.getMessageOfflinePlayer("signs.header", null, this.ownerName(true));
    for (Block b : blocks) {
        if (b == null) {
            Util.debugLog("Null signs in the queue, skipping");
            continue;
        }

        if (!(b.getState() instanceof Sign)) {
            continue;
        }
        if (!isAttached(b)) {
            continue;
        }
        Sign sign = (Sign) b.getState();
        String[] lines = sign.getLines();
        String header = lines[0];
        if (lines[0].isEmpty() && lines[1].isEmpty() && lines[2].isEmpty() && lines[3].isEmpty() ){
            signs.add(sign); //NEW SIGN
            continue;
        }
        if (header.contains(adminShopHeader) || header.contains(signHeaderUsername)) {
            signs.add(sign);
            continue; //TEXT SIGN
        }
        //Empty or matching the header
    }

    //            if (currentLine.contains(signHeader) || currentLine.isEmpty()) {
    //                signs.add(sign);
    //            } else {
    //                boolean text = false;
    //                for (String s : sign.getLines()) {
    //                    if (!s.isEmpty()) {
    //                        text = true;
    //                        break;
    //                    }
    //                }
    //                if (!text) {
    //                    signs.add(sign);
    //                }
    //            }
    //        }
    return signs;
}