Example #1
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);
      }
    }
  }