public void handleUpdateSign(Packet130UpdateSign packet130updatesign) {
    WorldServer worldserver = mcServer.getWorldManager(playerEntity.dimension);
    if (worldserver.blockExists(
        packet130updatesign.xPosition,
        packet130updatesign.yPosition,
        packet130updatesign.zPosition)) {
      TileEntity tileentity =
          worldserver.getBlockTileEntity(
              packet130updatesign.xPosition,
              packet130updatesign.yPosition,
              packet130updatesign.zPosition);
      if (tileentity instanceof TileEntitySign) {
        TileEntitySign tileentitysign = (TileEntitySign) tileentity;
        if (!tileentitysign.getIsEditAble()) {
          mcServer.logWarning(
              (new StringBuilder())
                  .append("Player ")
                  .append(playerEntity.username)
                  .append(" just tried to change non-editable sign")
                  .toString());
          return;
        }
      }
      for (int i = 0; i < 4; i++) {
        boolean flag = true;
        if (packet130updatesign.signLines[i].length() > 15) {
          flag = false;
        } else {
          for (int l = 0; l < packet130updatesign.signLines[i].length(); l++) {
            if (ChatAllowedCharacters.allowedCharacters.indexOf(
                    packet130updatesign.signLines[i].charAt(l))
                < 0) {
              flag = false;
            }
          }
        }
        if (!flag) {
          packet130updatesign.signLines[i] = "!?";
        }
      }

      if (tileentity instanceof TileEntitySign) {
        int j = packet130updatesign.xPosition;
        int k = packet130updatesign.yPosition;
        int i1 = packet130updatesign.zPosition;
        TileEntitySign tileentitysign1 = (TileEntitySign) tileentity;
        for (int j1 = 0; j1 < 4; j1++) {
          tileentitysign1.signText[j1] = packet130updatesign.signLines[j1];
        }

        tileentitysign1.func_32001_a(false);
        tileentitysign1.onInventoryChanged();
        worldserver.markBlockNeedsUpdate(j, k, i1);
      }
    }
  }