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

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

源代码1 项目: GriefDefender   文件: SignUtil.java
public static void updateSignRentable(Claim claim, Sign sign) {
    if (!isRentSign(claim, sign)) {
        return;
    }


    final PaymentType paymentType = claim.getEconomyData().getPaymentType();
    List<String> colorLines = new ArrayList<>(4);
    colorLines.add(ChatColor.translateAlternateColorCodes('&', "&7[&bGD&7-&1rent&7]"));
    colorLines.add(ChatColor.translateAlternateColorCodes('&', LegacyComponentSerializer.legacy().serialize(MessageCache.getInstance().ECONOMY_SIGN_RENT_DESCRIPTION)));
    colorLines.add(ChatColor.translateAlternateColorCodes('&', "&4$" + claim.getEconomyData().getRentRate()));

    for (int i = 0; i < colorLines.size(); i++) {
        sign.setLine(i, colorLines.get(i));
    }
    sign.update();
}
 
源代码2 项目: BedWars   文件: BedWarsSignOwner.java
private void updateLeaveSign(SignBlock sign) {
	List<String> texts = new ArrayList<>(Main.getConfigurator().config.getStringList("sign"));

	Block block = sign.getLocation().getBlock();
	if (block.getState() instanceof Sign) {
		Sign state = (Sign) block.getState();

		for (int i = 0; i < texts.size(); i++) {
			String text = texts.get(i);
			state.setLine(i, text.replaceAll("%arena%", i18nonly("leave_from_game_item")).replaceAll("%status%", "")
					.replaceAll("%players%", ""));
		}

		state.update();
	}
}
 
源代码3 项目: ChestCommands   文件: SignListener.java
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onInteract(PlayerInteractEvent event) {

	if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.hasBlock() && event.getClickedBlock().getState() instanceof Sign) {

		Sign sign = (Sign) event.getClickedBlock().getState();
		if (sign.getLine(0).equalsIgnoreCase(ChatColor.DARK_BLUE + "[menu]")) {

			sign.getLine(1);
			ExtendedIconMenu iconMenu = ChestCommands.getFileNameToMenuMap().get(BukkitUtils.addYamlExtension(sign.getLine(1)));
			if (iconMenu != null) {

				if (event.getPlayer().hasPermission(iconMenu.getPermission())) {
					iconMenu.open(event.getPlayer());
				} else {
					iconMenu.sendNoPermissionMessage(event.getPlayer());
				}

			} else {
				sign.setLine(0, ChatColor.RED + ChatColor.stripColor(sign.getLine(0)));
				event.getPlayer().sendMessage(ChestCommands.getLang().menu_not_found);
			}
		}
	}
}
 
源代码4 项目: civcraft   文件: Cannon.java
private void updateAngleSign(Block block) {
	Sign sign = (Sign)block.getState();
	sign.setLine(0, "YAW");
	sign.setLine(1, ""+this.angle);
	
	double a = this.angle;
	
	if (a > 0) {
		sign.setLine(2, "-->");
	} else if (a < 0){
		sign.setLine(2, "<--");
	} else {
		sign.setLine(2, "");
	}
	
	sign.setLine(3, "");
	sign.update();
}
 
源代码5 项目: civcraft   文件: StructureSign.java
public void update() {
	if (coord.getBlock().getState() instanceof Sign) {
		Sign sign = (Sign)coord.getBlock().getState();
		String[] lines = this.text.split("\\n");
		
		for (int i = 0; i < 4; i++) {
			if (i < lines.length) {
				sign.setLine(i, lines[i]);
			} else {
				sign.setLine(i, "");
			}
		}
		sign.update();
	}
}
 
源代码6 项目: DungeonsXL   文件: JoinSign.java
/**
 * Clears signs
 */
public void update() {
    int y = -1 * verticalSigns;
    while (startSign.getRelative(0, y + 1, 0).getState() instanceof Sign && y != 0) {
        Sign subsign = (Sign) startSign.getRelative(0, y + 1, 0).getState();
        subsign.setLine(0, "");
        subsign.setLine(1, "");
        subsign.setLine(2, "");
        subsign.setLine(3, "");
        subsign.update();
        y++;
    }
}
 
源代码7 项目: civcraft   文件: Cannon.java
private void updatePowerSign(Block block) {
	Sign sign = (Sign)block.getState();
	sign.setLine(0, "PITCH");
	sign.setLine(1, ""+this.power);
	sign.setLine(2, "");
	sign.setLine(3, "");
	sign.update();
}
 
源代码8 项目: QuickShop-Reremake   文件: ContainerShop.java
/**
 * Changes all lines of text on a sign near the shop
 *
 * @param lines The array of lines to change. Index is line number.
 */
@Override
public void setSignText(@NotNull String[] lines) {
    for (Sign sign : this.getSigns()) {
        if (Arrays.equals(sign.getLines(), lines)) {
            Util.debugLog("Skipped new sign text setup: Same content");
            continue;
        }
        for (int i = 0; i < lines.length; i++) {
            sign.setLine(i, lines[i]);
        }
        sign.update(true);
    }
}
 
源代码9 项目: RedProtect   文件: PlayerListener.java
private void changeFlag(Region r, String flag, Player p, Sign s) {
    if (r.setFlag(p, flag, !r.getFlagBool(flag))) {
        RedProtect.get().lang.sendMessage(p, RedProtect.get().lang.get("cmdmanager.region.flag.set").replace("{flag}", "'" + flag + "'") + " " + r.getFlagBool(flag));
        RedProtect.get().logger.addLog("(World " + r.getWorld() + ") Player " + p.getName() + " SET FLAG " + flag + " of region " + r.getName() + " to " + RedProtect.get().lang.translBool(r.getFlagString(flag)));
        s.setLine(3, ChatColor.translateAlternateColorCodes('&', RedProtect.get().lang.get("region.value") + " " + RedProtect.get().lang.translBool(r.getFlagString(flag))));
        s.update();
        if (!RedProtect.get().config.getSigns(r.getID()).contains(s.getLocation())) {
            RedProtect.get().config.putSign(r.getID(), s.getLocation());
        }
    }
}
 
源代码10 项目: civcraft   文件: DebugCommand.java
public void restoresigns_cmd() {
	
	CivMessage.send(sender, "restoring....");
	for (StructureSign sign : CivGlobal.getStructureSigns()) {
		
		BlockCoord bcoord = sign.getCoord();
		Block block = bcoord.getBlock();
		ItemManager.setTypeId(block, CivData.WALL_SIGN);
		ItemManager.setData(block, sign.getDirection());
		
		Sign s = (Sign)block.getState();
		String[] lines = sign.getText().split("\n");
		
		if (lines.length > 0) {
			s.setLine(0, lines[0]);
		}
		if (lines.length > 1) {
			s.setLine(1, lines[1]);
		}
		
		if (lines.length > 2) {
			s.setLine(2, lines[2]);
		}
		
		if (lines.length > 3) {
			s.setLine(3, lines[3]);
		}
		s.update();
		
		
	}
	
	
}
 
源代码11 项目: Shopkeepers   文件: SignShop.java
public void updateSign() {
	Sign sign = this.getSign();
	if (sign == null) {
		updateSign = true; // request update, once the sign is available again
		return;
	}

	// line 0: header
	sign.setLine(0, Settings.signShopFirstLine);

	// line 1: shop name
	String name = shopkeeper.getName();
	String line1 = "";
	if (name != null) {
		name = this.trimToNameLength(name);
		line1 = name;
	}
	sign.setLine(1, line1);

	// line 2: owner name
	String line2 = "";
	if (shopkeeper instanceof PlayerShopkeeper) {
		line2 = ((PlayerShopkeeper) shopkeeper).getOwnerName();
	}
	sign.setLine(2, line2);

	// line 3: empty
	sign.setLine(3, "");

	// apply sign changes:
	sign.update();
}
 
源代码12 项目: civcraft   文件: Buildable.java
public synchronized void buildRepairTemplate(Template tpl, Block centerBlock) {
	HashMap<Chunk, Chunk> chunkUpdates = new HashMap<Chunk, Chunk>();
	
	for (int x = 0; x < tpl.size_x; x++) {
		for (int y = 0; y < tpl.size_y; y++) {
			for (int z = 0; z < tpl.size_z; z++) {
				Block b = centerBlock.getRelative(x, y, z);
					//b.setTypeIdAndData(tpl.blocks[x][y][z].getType(), (byte)tpl.blocks[x][y][z].getData(), false);
					if (tpl.blocks[x][y][z].specialType == Type.COMMAND) {
						ItemManager.setTypeIdAndData(b, CivData.AIR, (byte)0, false);
					} else {
						ItemManager.setTypeIdAndData(b, tpl.blocks[x][y][z].getType(), (byte)tpl.blocks[x][y][z].getData(), false);
					}
					
					chunkUpdates.put(b.getChunk(), b.getChunk());
					
					if (ItemManager.getId(b) == CivData.WALL_SIGN || ItemManager.getId(b) == CivData.SIGN) {
						Sign s2 = (Sign)b.getState();
						s2.setLine(0, tpl.blocks[x][y][z].message[0]);
						s2.setLine(1, tpl.blocks[x][y][z].message[1]);
						s2.setLine(2, tpl.blocks[x][y][z].message[2]);
						s2.setLine(3, tpl.blocks[x][y][z].message[3]);
						s2.update();
					}
			}
		}
	}
}
 
源代码13 项目: HeavySpleef   文件: SignLayout.java
public boolean inflate(Sign sign, Set<Variable> variables) {
	for (int i = 0; i < lines.size() && i < LINE_COUNT; i++) {
		CustomizableLine line = lines.get(i);
		String lineString = line.generate(variables);
		
		sign.setLine(i, lineString);
	}

	return sign.update();
}
 
源代码14 项目: ZombieEscape   文件: Door.java
/**
 * Activates the Door Open sequence. If the door is already
 * activated, it will notify the activator. Otherwise, it will
 * start a countdown provided by the timer. At the end, it will
 * open the door.
 *
 * @param player the player to activate the door
 * @param sign   the sign that was interacted with
 * @param plugin the plugin instance
 */
public void activate(Player player, final Sign sign, final Plugin plugin) {
    if (isActivated()) {
        Messages.DOOR_ALREADY_ACTIVATED.send(player);
        return;
    }

    Messages.DOOR_ACTIVATED.send(player);

    activated = true;
    sign.setLine(2, Utils.color("&4&lACTIVATED"));
    sign.setLine(3, "");

    task = new BukkitRunnable() {
        int countdown = seconds;

        @Override
        public void run() {
            if (countdown == 0) {
                open(plugin, sign);
                cancel();
                task = -1;
                return;
            }

            sign.setLine(1, "Timer: " + countdown + "s");
            sign.update();
            countdown--;
        }
    }.runTaskTimer(plugin, 0, 20).getTaskId();
}
 
源代码15 项目: HeavySpleef   文件: SignLayout.java
public boolean inflate(Sign sign, VariableSuppliable suppliable) {
	String[] result = generate(suppliable);
	for (int i = 0; i < result.length; i++) {
		sign.setLine(i, result[i]);
	}
	
	return sign.update();
}
 
源代码16 项目: GriefDefender   文件: SignUtil.java
private static Consumer<CommandSender> createRentConfirmationConsumer(CommandSender src, Claim claim, Sign sign, double rate, int min, int max, PaymentType paymentType) {
    return confirm -> {
        resetRentData(claim);
        claim.getEconomyData().setRentRate(rate);
        claim.getEconomyData().setPaymentType(paymentType);
        if (min > 0) {
            if (min > max) {
                claim.getEconomyData().setRentMinTime(max);
            } else {
                claim.getEconomyData().setRentMinTime(min);
            }
        }
        if (max > 0) {
            final int rentMaxLimit = GriefDefenderPlugin.getActiveConfig(((GDClaim) claim).getWorld()).getConfig().economy.rentMaxTimeLimit;
            if (max > rentMaxLimit) {
                claim.getEconomyData().setRentMaxTime(rentMaxLimit);
            } else {
                claim.getEconomyData().setRentMaxTime(max);
            }

            claim.getEconomyData().setRentEndDate(Instant.now().plus(max, paymentType == PaymentType.DAILY ? ChronoUnit.DAYS : ChronoUnit.HOURS));
        }
        claim.getEconomyData().setForRent(true);
        Sign rentSign = sign;
        if (rentSign == null) {
            rentSign = SignUtil.getSign(((GDClaim) claim).getWorld(), claim.getEconomyData().getRentSignPosition());
        }
        if (rentSign != null) {
            claim.getEconomyData().setRentSignPosition(VecHelper.toVector3i(sign.getLocation()));
            claim.getData().save();
            List<String> lines = new ArrayList<>(4);
            lines.add(ChatColor.translateAlternateColorCodes('&', "&7[&bGD&7-&1rent&7]"));
            lines.add(ChatColor.translateAlternateColorCodes('&', LegacyComponentSerializer.legacy().serialize(MessageCache.getInstance().ECONOMY_SIGN_RENT_DESCRIPTION)));
            lines.add(ChatColor.translateAlternateColorCodes('&', "&4$" + String.format("%.2f", rate) + "/" + LegacyComponentSerializer.legacy().serialize((paymentType == PaymentType.DAILY ? MessageCache.getInstance().LABEL_DAY : MessageCache.getInstance().LABEL_HOUR))));
            for (int i = 0; i < lines.size(); i++) {
                sign.setLine(i, lines.get(i));
            }
            sign.update();
        }

        final Component message = GriefDefenderPlugin.getInstance().messageData.getMessage(MessageStorage.ECONOMY_CLAIM_RENT_CONFIRMED,
                ImmutableMap.of(
                "amount", "$" + rate,
                "type", paymentType == PaymentType.DAILY ? MessageCache.getInstance().LABEL_DAY : MessageCache.getInstance().LABEL_HOUR));
        GriefDefenderPlugin.sendMessage(src, message);
    };
}
 
源代码17 项目: 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();
            }
        }
    }
}
 
源代码18 项目: BedWars   文件: Game.java
public void updateSigns() {
    List<SignBlock> gameSigns = Main.getSignManager().getSignsForName(this.name);

    if (gameSigns.isEmpty()) {
        return;
    }

    String statusLine = "";
    String playersLine = "";
    switch (status) {
        case DISABLED:
            statusLine = i18nonly("sign_status_disabled");
            playersLine = i18nonly("sign_status_disabled_players");
            break;
        case REBUILDING:
            statusLine = i18nonly("sign_status_rebuilding");
            playersLine = i18nonly("sign_status_rebuilding_players");
            break;
        case RUNNING:
        case GAME_END_CELEBRATING:
            statusLine = i18nonly("sign_status_running");
            playersLine = i18nonly("sign_status_running_players");
            break;
        case WAITING:
            statusLine = i18nonly("sign_status_waiting");
            playersLine = i18nonly("sign_status_waiting_players");
            break;
    }
    playersLine = playersLine.replace("%players%", Integer.toString(players.size()));
    playersLine = playersLine.replace("%maxplayers%", Integer.toString(calculatedMaxPlayers));

    List<String> texts = new ArrayList<>(Main.getConfigurator().config.getStringList("sign"));

    for (int i = 0; i < texts.size(); i++) {
        String text = texts.get(i);
        texts.set(i, text.replaceAll("%arena%", this.getName()).replaceAll("%status%", statusLine)
                .replaceAll("%players%", playersLine));
    }

    for (SignBlock sign : gameSigns) {
        if (sign.getLocation().getChunk().isLoaded()) {
            Block block = sign.getLocation().getBlock();
            if (block.getState() instanceof Sign) {
                Sign state = (Sign) block.getState();
                for (int i = 0; i < texts.size() && i < 4; i++) {
                    state.setLine(i, texts.get(i));
                }
                state.update();
            }
        }
    }
}
 
源代码19 项目: Civs   文件: SiegeEffect.java
@EventHandler
public void onCustomEvent(RegionTickEvent event) {
    if (!event.getRegion().getEffects().containsKey(KEY) || !event.isHasUpkeep()) {
        return;
    }
    Region region = event.getRegion();
    Location l = region.getLocation();

    String damageString = region.getEffects().get(KEY);
    int damage = 1;
    if (damageString != null) {
        damage = Integer.parseInt(damageString);
    }

    //Check if valid siege machine position
    if (l.getBlock().getY() + 2 < l.getWorld().getHighestBlockAt(l).getY()) {
        return;
    }

    Block b = l.getBlock().getRelative(BlockFace.UP);
    BlockState state = b.getState();
    if (!(state instanceof Sign)) {
        return;
    }

    //Find target Super-region
    Sign sign = (Sign) state;
    String townName = sign.getLine(0);
    Town town = TownManager.getInstance().getTown(townName);
    if (town == null) {
        for (Town currentTown : TownManager.getInstance().getTowns()) {
            if (currentTown.getName().startsWith(townName)) {
                town = currentTown;
                break;
            }
        }
        if (town == null) {
            sign.setLine(2, "invalid name");
            sign.update();
            return;
        }
    }

    //Check if too far away
    TownType townType = (TownType) ItemManager.getInstance().getItemType(town.getType());
    double rawRadius = townType.getBuildRadius();
    try {
        if (town.getLocation().distance(l) - rawRadius >  150) {
            sign.setLine(2, "out of");
            sign.setLine(3, "range");
            sign.update();
            return;
        }
    } catch (IllegalArgumentException iae) {
        sign.setLine(2, "out of");
        sign.setLine(3, "range");
        sign.update();
        return;
    }

    if (town.getPower() < 1) {
        return;
    }

    Location spawnLoc = l.getBlock().getRelative(BlockFace.UP, 3).getLocation();
    Location loc = new Location(spawnLoc.getWorld(), spawnLoc.getX(), spawnLoc.getY() + 15, spawnLoc.getZ());
    final Location loc1 = new Location(spawnLoc.getWorld(), spawnLoc.getX(), spawnLoc.getY() + 20, spawnLoc.getZ());
    final Location loc2 = new Location(spawnLoc.getWorld(), spawnLoc.getX(), spawnLoc.getY() + 25, spawnLoc.getZ());
    final Location loc3 = new Location(spawnLoc.getWorld(), spawnLoc.getX(), spawnLoc.getY() + 30, spawnLoc.getZ());
    l.getWorld().spawnParticle(Particle.EXPLOSION_HUGE, loc, 2);
    l.getWorld().playSound(loc, Sound.ENTITY_GENERIC_EXPLODE, 2, 1);

    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Civs.getInstance(), new Runnable() {
        @Override
        public void run() {
            loc1.getWorld().spawnParticle(Particle.EXPLOSION_HUGE, loc1, 2);
            loc1.getWorld().playSound(loc1, Sound.ENTITY_GENERIC_EXPLODE, 2, 1);
        }
    }, 5L);
    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Civs.getInstance(), new Runnable() {
        @Override
        public void run() {
            loc2.getWorld().spawnParticle(Particle.EXPLOSION_HUGE, loc2, 2);
            loc2.getWorld().playSound(loc2, Sound.ENTITY_GENERIC_EXPLODE, 2, 1);
        }
    }, 10L);

    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Civs.getInstance(), new Runnable() {
        @Override
        public void run() {
            loc3.getWorld().spawnParticle(Particle.EXPLOSION_HUGE, loc3, 2);
            loc3.getWorld().playSound(loc3, Sound.ENTITY_GENERIC_EXPLODE, 2, 1);
        }
    }, 15L);

    TownManager.getInstance().setTownPower(town, town.getPower() - damage);
}
 
源代码20 项目: askyblock   文件: IslandBlock.java
/**
 * Paste this block at blockLoc
 * @param nms
 * @param blockLoc
 */
//@SuppressWarnings("deprecation")
@SuppressWarnings("deprecation")
public void paste(NMSAbstraction nms, Location blockLoc, boolean usePhysics, Biome biome) {
    // Only paste air if it is below the sea level and in the overworld
    Block block = new Location(blockLoc.getWorld(), x, y, z).add(blockLoc).getBlock();
    block.setBiome(biome);
    nms.setBlockSuperFast(block, typeId, data, usePhysics);
    if (signText != null) {
        if (block.getTypeId() != typeId) {
            block.setTypeId(typeId);
        }
        // Sign
        Sign sign = (Sign) block.getState();
        int index = 0;
        for (String line : signText) {
            sign.setLine(index++, line);
        }
        sign.update(true, false);
    } else if (banner != null) {
        banner.set(block);
    } else if (skull != null){
        skull.set(block);
    } else if (pot != null){
        pot.set(nms, block);
    } else if (spawnerBlockType != null) {
        if (block.getTypeId() != typeId) {
            block.setTypeId(typeId);
        }
        CreatureSpawner cs = (CreatureSpawner)block.getState();
        cs.setSpawnedType(spawnerBlockType);
        //Bukkit.getLogger().info("DEBUG: setting spawner");
        cs.update(true, false);
    } else if (!chestContents.isEmpty()) {
        if (block.getTypeId() != typeId) {
            block.setTypeId(typeId);
        }
        //Bukkit.getLogger().info("DEBUG: inventory holder "+ block.getType());
        // Check if this is a double chest
        
        InventoryHolder chestBlock = (InventoryHolder) block.getState();
        //InventoryHolder iH = chestBlock.getInventory().getHolder();
        if (chestBlock instanceof DoubleChest) {
            //Bukkit.getLogger().info("DEBUG: double chest");
            DoubleChest doubleChest = (DoubleChest) chestBlock;
            for (ItemStack chestItem: chestContents.values()) {
                doubleChest.getInventory().addItem(chestItem);
            }
        } else {
            // Single chest
            for (Entry<Byte, ItemStack> en : chestContents.entrySet()) {
                //Bukkit.getLogger().info("DEBUG: " + en.getKey() + ","  + en.getValue());
                chestBlock.getInventory().setItem(en.getKey(), en.getValue());
            }
        }
    }
}