private boolean editSign(CommandSender sender, String[] args) { if (!(sender instanceof Player)) return true; if (args.length == 0) return false; if (!args[0].matches("^[0-9]+$")) return false; int lineNo = Integer.parseInt(args[0]) - 1; String newLine = ""; for (int i = 1; i < args.length; i++) { newLine += args[i] + " "; } newLine = newLine.trim(); System.out.println("-" + newLine + "-"); Player player = (Player) sender; Block b = player.getTargetBlock(null, 5); System.out.println(b); if (b != null && (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN)) { Sign sign = (Sign) b.getState(); String[] lines = sign.getLines(); lines[lineNo] = newLine; SignChangeEvent event = new SignChangeEvent(b, player, lines); Bukkit.getPluginManager().callEvent(event); if (!event.isCancelled()) { sign.setLine(lineNo, newLine); sign.update(); } } return true; }
@Override public void onSignChange(SignChangeEvent event) { if (event.isCancelled()) return; if (!event.getLine(0).equalsIgnoreCase("[ExpStone]")) return; // Get basics final Block block = event.getBlock(); final Player player = event.getPlayer(); // Get a certein block. final Block fieldBlock = BlockUtil.getFieldStone(block, true); // Chech if any surrounding blocks is a known fieldblock. if (fieldBlock == null) { player.sendMessage(ChatColor.YELLOW + "ExpensiveStones: No Expensive StoneType Found."); return; } // _____________________Test Adming_____________________________ if (event.getLine(2).equalsIgnoreCase("admin")) { // Check rights if (!player.hasPermission(ESPermissionManager.PERM_ADMIN)) { player.sendMessage( ChatColor.YELLOW + "ExpensiveStones: You don't have the permissions to make an adminField."); } else { fieldManager.setAdminField(fieldManager.getExpensiveField(block)); player.sendMessage( ChatColor.YELLOW + "ExpensiveStones: Admin-Field created, field is now handled by PreciousStones."); player.sendMessage(ChatColor.YELLOW + "You can now destroy this sign."); } return; } // _____________________Normal Player___________________________ final Block chestBlock = BlockUtil.getChest(block); // Chech chest if (chestBlock == null) { player.sendMessage(ChatColor.YELLOW + "ExpensiveStones: No chest found for register"); return; } final ExpensiveField expField = new ExpensiveField(block, chestBlock, stones.getForceFieldManager().getField(fieldBlock)); fieldManager.disableField(expField); event.setLine(1, expField.getField().getOwner()); event.setLine(2, expField.getSettings().getMaterial().toString()); event.setLine(3, "<DISABLED>"); player.sendMessage( ChatColor.YELLOW + "ExpensiveStones: Field Registered, click to enable field"); }
@EventHandler(priority = EventPriority.NORMAL) public void onSignChange(SignChangeEvent event) { if (event.isCancelled()) return; String line = event.getLine(1); Pair<String> data = idMap.get(line); if (data != null) { if (PermissionHandler.getInstance() .playerHasNode(event.getPlayer(), data.getSecond() + ".build")) { event.setLine(1, data.getFirst()); } else { event.setCancelled(true); } } }
@EventHandler public void onSignChange(SignUpdateEvent event) { if (event.isCancelled()) { return; } if (!(event.getSource() instanceof Player)) { return; } SignChangeEvent signChangeEvent = new SignChangeEvent( BukkitUtil.fromBlock(event.getSign().getBlock()), new BridgePlayer((Player) event.getSource()), event.getLines()); Bukkit.getPluginManager().callEvent(signChangeEvent); event.setLines(signChangeEvent.getLines()); event.setCancelled(signChangeEvent.isCancelled()); }
public void a(Packet130UpdateSign packet130updatesign) { // CraftBukkit start if (this.player.dead) { return; } // CraftBukkit end // WorldServer worldserver = this.minecraftServer.a(this.player.dimension); if (worldserver.isLoaded(packet130updatesign.x, packet130updatesign.y, packet130updatesign.z)) { TileEntity tileentity = worldserver.getTileEntity( packet130updatesign.x, packet130updatesign.y, packet130updatesign.z); if (tileentity instanceof TileEntitySign) { TileEntitySign tileentitysign = (TileEntitySign) tileentity; if (!tileentitysign.a()) { this.minecraftServer.c( "Player " + this.player.name + " just tried to change non-editable sign"); // CraftBukkit this.sendPacket( new Packet130UpdateSign( packet130updatesign.x, packet130updatesign.y, packet130updatesign.z, tileentitysign.lines)); return; } } int i; int j; for (j = 0; j < 4; ++j) { boolean flag = true; if (packet130updatesign.lines[j].length() > 15) { flag = false; } else { for (i = 0; i < packet130updatesign.lines[j].length(); ++i) { if (FontAllowedCharacters.a.indexOf(packet130updatesign.lines[j].charAt(i)) < 0) { flag = false; } } } if (!flag) { packet130updatesign.lines[j] = "!?"; } } if (tileentity instanceof TileEntitySign) { j = packet130updatesign.x; int k = packet130updatesign.y; i = packet130updatesign.z; TileEntitySign tileentitysign1 = (TileEntitySign) tileentity; // CraftBukkit start Player player = server.getPlayer(this.player); SignChangeEvent event = new SignChangeEvent( (CraftBlock) player.getWorld().getBlockAt(j, k, i), server.getPlayer(this.player), packet130updatesign.lines); server.getPluginManager().callEvent(event); if (!event.isCancelled()) { for (int l = 0; l < 4; ++l) { tileentitysign1.lines[l] = event.getLine(l); } tileentitysign1.setEditable(false); } // CraftBukkit end tileentitysign1.update(); worldserver.notify(j, k, i); } } }
public void onSignChange(SignChangeEvent event) { if (!event.isCancelled() && plugin.cfg.getBoolean("sign.enable")) { // parse lines } }