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");
  }
예제 #3
0
  @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);
      }
    }
  }
예제 #4
0
 @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());
 }
예제 #5
0
  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

    }
  }